ArrayList、LinkedList和Vector的關係和區別

ArrayList:

  1.邏輯順序和物理順序都連續的線性表
  2.基於數組來實現

Vector:

  1.邏輯順序和物理順序都連續的線性表
  2.基於數組來實現

LinkedList:

  1.邏輯順序連續但是物理順序不一定連續的線性表
  2.基於雙向鏈表來實現

聯繫:

  1.ArrayList、LinkedList和Vector都是List集合下的常用類
  2.ArrayList和Vector都是基於數組實現的,方法的實現也是大同小異
  3.ArrayList和Vector都存在擴容問題
  4.ArrayList和Vector默認初始化大小都爲

區別:

  1.ArrayList的擴容是將容量變爲了原來的1.5倍,Vector的擴容時變爲原來容量的2倍
  2.ArrayList的初始化採用的是延遲加載,當一次增加元素的時候纔會初始化成大小爲默認值的數組,Vector的初始化採用的時候立即加載,在創建對象的時候就創建了大小爲默認值的數組
  3.ArrayList是線程不安全的,Vector是線程安全的。不考慮線程安全的情況時一般使用ArrayList,性能高,Vector線程安全讀讀互斥,因此性能偏低
  4.ArrayList和Vector都支持隨機訪問,LinkedList不支持隨機訪問,在查詢情況多的場景下,ArrayList更適合使用
  5.LinkedList進行增加和刪除操作的時間複雜度爲O(1),ArrayList增加刪除的時間複雜度是O(N),在增刪頻繁的情況下,LinkedList更適合使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章