ArrayList與LinkedList的區別

2021-10-24 05:29:04 字數 952 閱讀 9988

arraylist是執行緒不安全的

public

boolean

add(e e)

為什麼arraylist還要實現randomaccess介面?

randomaccess介面實際上就是乙個標識,它代表著arraylist是支援快速訪問功能的

arraylist的底層實現是object陣列,所以add(e e)方法的時間複雜度是o(1)

如果是add(int index, e e)時間複雜度就是o(n - i),因為要把後面的元素往後移一位

因為是陣列實現的 所以arraylist支援快速訪問 get(int index)

arraylistvector相比,vector是執行緒安全的 但是同樣也導致執行緒訪問vector會在同步上花費大量時間

arraylist對應的就是linkedlist

linkedlist同樣是執行緒不安全的

public

boolean

add(e e)

看原始碼可知,這裡沒有對多執行緒做任何預防

linkedlist的底層是雙向鍊錶實現的,所以新增刪除的時間複雜度是o(1),而帶index的新增則為o(n),因為要移動到這個位置,

linkedlist是不支援快速訪問的,鍊錶嘛

和arraylist不一樣,陣列實現的話需要預留很多多餘的空間,但是鍊錶除了本身的大小其他沒有多餘空間浪費

本文由部落格一文多發平台 openwrite 發布!

LinkedList與ArrayList的區別

我們依然從資料結構的角度看度這個問題。從命名上可以大致猜出來linkedlist的資料結構為鍊錶,arraylist的資料結構為陣列。能夠看到這裡它們的區別就一目了然了 它們的區別大致就和陣列和鍊錶的區別是一樣的。在在查詢和刪除操作中陣列的速度要優於鍊錶,這是因為陣列是按照下標來執行這兩個操作的,而...

ArrayList與LinkedList的區別

arraylist與linkedlist的區別 arraylist和linkedlist的大致區別如下 1.arraylist是實現了基於動態陣列的資料結構,linkedlist基於鍊錶的資料結構。2.對於隨機訪問get和set,arraylist覺得優於linkedlist,因為linkedlis...

ArrayList與LinkedList的區別

關於兩者的區別,先通過兩者對資料的操作進行對比 public static void main string args end system.currenttimemillis system.out.println arraylist第一次插入資料前後時間差 end start linkedlist...