ArrayList、Vevtor和LinkedList的聯繫和區別

聯繫:
ArrayList、Vector、LinkedList類均在java.util包中,都爲List接口的子類。
區別:

  1. 結構上:ArrayList、Vector基於數組實現,LinkedList基於雙向鏈表實現。
ArrayList Vector
初始化策略 採用懶加載策略,第一次add時才初始化內部數組,默認初始化大小爲10。 產生對象時就初始化內部數組,默認大小爲10。
擴容策略 擴容爲原數組的1.5倍 擴容爲原數組的2倍
線程安全問題 採用異步處理線程不安全,性能較高 採用synchronized修飾增刪查改方法,線程安全,性能較低(鎖粒度太粗,將當前集合對象鎖住,讀讀互斥)
其他 JDK內置的Stack是Vector的子類
使用場景 在大部分場合都是適合使用的,常適用於頻繁查找、在集合末端插入與刪除元素 不建議使用
  1. LinkedList採用異步處理,線程不安全,頻繁在任意位置的插入與刪除考慮使用,LinkedList是Queue接口的常用子類。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章