标签:
本文仅供学习,若有错误欢迎指出。
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://www.cnblogs.com/li12014239/p/5012281.html