ArrayList與LinkedList的區別

2021-08-20 13:39:06 字數 2287 閱讀 7271

關於兩者的區別,先通過兩者對資料的操作進行對比

public static void main(string args) 

end = system.currenttimemillis();

system.out.println("arraylist第一次插入資料前後時間差:" + (end - start));

linkedlistlinkedlist = new linkedlist();

start = system.currenttimemillis();

for(int i = 0 ; i < 5000000 ; i ++)

end = system.currenttimemillis();

system.out.println("linkedlist第一次插入資料前後時間差:" + (end - start));

object object = new object();

start = system.currenttimemillis();

for(int i = 0 ; i < 1000 ; i ++)

end = system.currenttimemillis();

system.out.println("arraylist再次插入資料前後時間差:" + (end - start));

object object2 = new object();

start = system.currenttimemillis();

for(int i = 0 ; i < 1000 ; i ++)

end = system.currenttimemillis();

system.out.println("linkedlist再次插入資料前後時間差:" + (end - start));

start = system.currenttimemillis();

for(int i = 0 ; i < 10000 ; i ++)

end = system.currenttimemillis();

system.out.println("arraylist刪除資料前後時間差:" + (end - start));

start = system.currenttimemillis();

for(int i = 0 ; i < 10000 ; i ++)

end = system.currenttimemillis();

system.out.println("linkedlist刪除資料前後時間差:" + (end - start));

}

上面**的執行結果:

arraylist第一次插入資料前後時間差:421

linkedlist第一次插入資料前後時間差:1493

arraylist再次插入資料前後時間差:2764

linkedlist再次插入資料前後時間差:0

arraylist刪除資料前後時間差:27636

linkedlist刪除資料前後時間差:173

程式對arraylisthe linkedlist分別執行插入資料、刪除資料操作、輸出各種操作的時間差。通過時間差可以非常直觀的看出:

1、在第一次插入資料時,arraylist插入500萬條資料的執行速度要比linkedlist的要快的多,

2、但當初始化成功之後,繼續向arraylist新增1000個元素時,速度較同樣情況的linkedlist要慢很多

3、刪除資料的時候兩者有很明顯的差距

總結:

arraylist:

優點:arraylist是實現了基於動態陣列的資料結構,因為位址連續,一旦資料儲存好了,查詢操作效率會比較高(在記憶體裡是連著放的)。

缺點:因為位址連續, arraylist要移動資料,所以插入和刪除操作效率比較低。

linkedlist:

優點:linkedlist基於鍊錶的資料結構,位址是任意的,所以在開闢記憶體空間的時候不需要等乙個連續的位址,對於新增和刪除操作add和remove,linedlist比較佔優勢。linkedlist 適用於要頭尾操作或插入指定位置的場景

缺點:因為linkedlist要移動指標,所以查詢操作效能比較低。

如果資料較為穩定,不易發生新增操作,那麼我們可以考慮使用arraylist.

如果容易發生修改,例如網際網路應用場景,應用面向的是大眾使用者平台,元素的修改 較為頻繁,那麼我們可以考慮使用linkedlist

LinkedList與ArrayList的區別

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

ArrayList與LinkedList的區別

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

ArrayList 與LinkedList 的區別

arraylist實現了list介面,它是以陣列的方式來實現的,陣列的特性是可以使用索引的方式來快速定位物件的位置,因此對於快速的隨機取得物件的需求,使用arraylist實現執行效率上會比較好.linkedlist是採用鍊錶的方式來實現list介面的,它本身有自己特定的方法,如 addfirst ...