關於兩者的區別,先通過兩者對資料的操作進行對比
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 ...