ArrayList
ArrayList 是什麼
看名字 Array(數組) 、List(列表) ,一個由數組實現的列表。java
ArrayList的特性
既然是經過數組這種數據結構實現的列表,那麼 因此數組的特性 ArrayList 都有。數組
那麼數組這種數據結構有什麼特性呢。 參考數據結構之數組安全
能夠簡單概括爲三點數據結構
- 在內存中擁有連續的存儲空間,每一個元素都對應一個下標
- 添加(插入)、刪除時,若是添加(插入)、刪除點 後面存在數據,那麼會致使後面數據的數組下標後移
- 查找,修改時,因爲有數組下標的存在,速度極快,時間複雜度是O(1)
除了以上數組共有的特色外,ArrayList還有如下特色post
- 空間不足時自動動態擴容
- 線程不安全(不過所以也比線程安全的Vector性能好)
- 實現了Serializable接口,支持序列化
- 實現了Cloneable接口,能被克隆
適用場所
適用於 查找或修改較多,但添加(插入)、刪除較少的場合性能
LinkedList
LinkedList 是什麼
Linked(連接)、List(列表) ,一個由鏈表(具體來講是雙向鏈表)實現的列表線程
LinkedList 的特性
由於是經過鏈表這種數據結構實現的列表,因此鏈表的特性 LinkedList 都有。繼承
那麼鏈表這種數據結構有什麼特性呢。 參考數據結構之鏈表接口
能夠簡單概括爲三點內存
- 在內存中是「零碎」的存儲空間,每一個鏈表節點的存儲單元都存儲着一個指向下一節點的引用
- 添加(插入)、刪除時,只須要修改添加(插入)、刪除點前後的引用指向,效率極高
- 查找、修改時,因爲須要遍歷鏈表,效率較慢
除了以上鍊表共有的特色外,LinkedList 還有如下特色
- 是一個繼承於AbstractSequentialList的雙向鏈表
- 實現了Cloneable接口,能夠被克隆
- java.io.Serializable接口,支持序列化
- 線程不安全
適用場所
適用於 添加(插入)、刪除較多,查找或修改較少的場合