背景
程序員面試題中經常遇到ArrayList與LinkedList區別,現實的測試情況肯定沒多少人清楚。
理論是這樣,現實測試情況很打臉啊。
學習目標
搞清楚JDK1.8種ArrayList與LinkedList的性能情況代碼例子
環境準備:java jdk1.8版本,100萬數據量,臺式機8G內存、雙核【速度很快哦】
注意測試結果,跟硬件配置關係很大,返回時間都是毫秒
程序員注意啦:NUM是100萬,
測試結果
批量循環100萬次添加元素,ArrayList、LinkedList的表現
【尾部加元素】,性能都是差不多的。【首部加元素】,LinkedList就完虐ArrayList了為啥首部加元素ArrayList慢了?
原因就是多瞭如下代碼,
源碼說明,如下。
ArrayList的尾部添加元素,就比首部添加元素少個COPY操作。
單個元素添加
性能沒顯著差異
ArrayList首部添加一個元素,性能消耗也非常小的。
核心測試代碼
arrayList.add(0,new Content("11111", "程序汪汪",2,"2018-03-16"));
linkedList.add(new Content("11111", "程序汪汪",2,"2018-03-16"));
隨機獲取
性能沒顯著差異
核心測試代碼
arrayList.get(555555);
linkedList.get(555555);
單個刪除
性能沒顯著差異
核心測試代碼
arrayList.remove(arrayList.get(555555));
linkedList.remove(555555);