ArrayList、LinkedList和Vector的關係和區別

ArrayList:

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

Vector:

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

LinkedList:

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

聯繫:

  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更適合使用線程

相關文章
相關標籤/搜索