背景
程序員面試題中經常遇到ArrayList與LinkedList區別,現實的測試情況肯定沒多少人清楚。
![還原真像:ArrayList性能幾乎完美,100萬數據測試](http://p2.ttnews.xyz/loading.gif)
理論是這樣,現實測試情況很打臉啊。
學習目標
- 搞清楚JDK1.8種ArrayList與LinkedList的性能情況
代碼例子
環境準備:java jdk1.8版本,100萬數據量,臺式機8G內存、雙核【速度很快哦】
注意測試結果,跟硬件配置關係很大,返回時間都是毫秒
程序員注意啦:NUM是100萬,
![還原真像:ArrayList性能幾乎完美,100萬數據測試](http://p2.ttnews.xyz/loading.gif)
測試結果
批量循環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);
總結
- 除了在批量首部添加元素ArrayList性能差,其他情況都非常強勁啊。
- 放心的用ArrayList吧,我這可是100萬數據量,平時那點數據量性能消耗就更小了。
又get到新知識的,請關注啊
閱讀更多 程序汪汪 的文章