ArrayList和LinkedList的區別是什麼

熱乾麵的日常學習發表於2020-10-27

一、區別

  1. ArrayList是基於動態陣列的資料結構,LinkedList是基於雙向連結串列的資料結構(有next和previous)
  2. ArrayList有get()和set()方法,隨機訪問比較快(O(1)),而LinkedLsit的訪問需要從頭開始移動指標(O(n))。
  3. 對新增和刪除操作add()和remove操作,LinkedList更加快捷,因為ArrayList需要移動資料。
  4. 但在某些情況下LinkedList的表現要優於ArrayList,有些演算法在LinkedList中實現時效率更高。比方說,利用Collections.reverse方法對列表進行反轉時,其效能就要好些。當要對list進行大量的插入和刪除操作時,LinkedList也是一個較好的選擇。
  5. 空間浪費:ArrayList浪費空間主要在於在list列表的結尾需要預留一定的容量空間;LinkedList1的空間花費則體現在每一個元素消耗的空間比較大。

二、總結

當操作是在一列資料的後面新增資料而不是在前面或中間,並且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的效能;當你的操作是在一列資料的前面或中間新增或刪除資料,並且按照順序訪問其中的元素時,就應該使用LinkedList了

相關文章