ArrayList 和 LinkedList

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接口,支持序列化
  • 線程不安全

適用場所

適用於 添加(插入)、刪除較多,查找或修改較少的場合

相關文章
相關標籤/搜索