Java集合01——List 的幾個實現類,了解一下?


從本文起,我們將開始分享 Java 集合方面的知識,關注公眾號「Java面典」了解更多 Java 知識點。

List 是繼承於 Collection 的接口,其實現類有 ArrayList,LinkedList,Vector 和 Stack。

ArrayList

特點

  • ArrayList 內部是通過動態數組實現的,它允許對元素進行快速隨機訪問
  • 當數組大小不滿足時需要擴容,需要將已有數組移動到新的內存空間;
  • 當從 ArrayList 的中間位置插入或者刪除元素時,需要對數組進行復制、移動代價比較高;
  • 線程不安全

容量

  • 初始容量:10,
  • 擴容:(原始容量 x 3 ) / 2 + 1。

適用場景

  • ArrayList 適合單線程,或多線程環境,但 List 只會被單個線程操作;
  • 隨機查找和遍歷,不適合插入和刪除。

LinkedList

特點

  • LinkedList 是基於雙向鏈表存儲數據的,很適合數據的動態插入和刪除;
  • 可根據索引值獲取(get(int index)))或刪除(remove(int index))節點(實現原理:通過計數索引值實現,當 index > 鏈表長度的1/2,從鏈表尾部開始遍歷;反之,從鏈表頭部開始遍歷);
  • 可作為隊列和棧使用,
  • 線程不安全

適用場景

它適合單線程中,順序讀取,不適合隨機讀取和隨機刪除。

Vector

特點

其特點大致與 ArrayList 一樣,除以下特點:

  • 線程安全(因為內部方法都是通過 synchronized 關鍵字同步的)。

容量

  • 初始容量:10;
  • 擴容:若擴容系數 > 0,則將容量的值增加“擴容系數”;否則,將容量大小增加一倍。

使用場景

Vector 使用多線程,避免多線程同時寫而引起的不一致性。

Stack

Stack 相當於一個 Vector 棧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM