本文僅供學習參考,若有錯誤歡迎大牛指出。
ArrayList和LinkedList的大致區別:
1.ArrayList是實現了基于動態數組的數據結構。
2.LinkedList基于鏈表的數據結構。
3.對于隨機訪問get和set,ArrayList優,因為LinkedList要移動指針。
4.對于新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據。
1 PRivate static void modifyArrayListPerformance(){ 2 ArrayList<String> strList = new ArrayList<>(); 3 long t1 = System.currentTimeMillis(); 4 for (int i = 0; i < 100000; i++) { 5 strList.add(0,"test"); 6 } 7 long t2 = System.currentTimeMillis(); 8 System.out.println("ArrayList花費:"+(t2-t1)); 9 }10 11 private static void modifyLinkedListPerformance(){12 LinkedList<String> strList = new LinkedList<>();13 long t1 = System.currentTimeMillis();14 for (int i = 0; i < 100000; i++) {15 strList.add(0,"test");16 }17 long t2 = System.currentTimeMillis();18 System.out.println("LinkedList花費:"+(t2-t1));19 }
通過三次時間對比,分別為:
i 位置, 0 位置,末尾位置
=========================================================================================
總結:通過實踐發現,網上面試答案太過含糊(大致意思為:ArrayList 適用于查詢 LinkedList適用于修改)
1. 當在末尾插入元素,兩者性能差距不大,ArrayList略好
2. 當在固定位置(本文為 0 位置)插入元素,LinkedList性能明顯好于ArrayList
3. 當在 i 位置插入元素,ArrayList性能明顯高于LinkedList,同時反證了兩者在查詢效率上ArrayList的優勢
紙上得來終覺淺,希望學習基礎的同學實際操作一下,其他情景自行實現。
下面是一個更專業的概括鏈接:
http://pengcqu.VEvb.com/blog/502676
http://blog.csdn.net/qianzhiyong111/article/details/6678035
新聞熱點
疑難解答