记录一次测试ArrayList和LinkedList
数据插入操作
/** * @param list 需要进行操作的list * @param cap 控制插入位置 * @param l 打印值 * */ public void dataAdd(List list,int cap,String l){ long startTime=System.currentTimeMillis(); for(int i=0;i<100000;i++){ list.add(i/cap*2,"测试"+i); } long time=System.currentTimeMillis()-startTime; System.out.println(l+" 插入耗时:"+time); }
数据查找操作
查找下标
public void find(List list,String l){ //随机查找1000个数耗时 long startTime = System.currentTimeMillis(); for (int i = 0; i < 1000; i++) { int t= (int)(1+Math.random()*(100000-1+1)); // list.contains("测试"+t); list.get(t); }
从尾部插入
@Test public void testl(){ List<String> list=new ArrayList<>(); List<String> list2=new LinkedList<>(); dataAdd(list,2,"ArrayList"); dataAdd(list2,2,"LinkedList"); find(list,"ArrayList"); find(list2,"LinkedList"); }
尾部插入100000条数据
arrayList要比linkedlist慢 查找时,arraylist要比linkedlist快,查找下标
修改插入部分代码,尾插,插入1000000条数据
结果为 此时,arrayList要比linkedlist快
修改cap为4,从list中间插入
arrayList要比linkedlist快十倍
修改cap为6,8,10,等数据
改为6: ArrayList 插入耗时:798 LinkedList 插入耗时:2774
改为8 ArrayList 插入耗时:903 LinkedList 插入耗时:2137
改为10: ArrayList 插入耗时:1019 LinkedList 插入耗时:1962
插入位置,越靠近头部,耗时越接近
使用头插法: ArrayList 插入耗时:1230 LinkedList 插入耗时:14
总结:
若使用头插法插入数据,使用linkedList效率大于arrayList 使用尾插法,数据量过大时,arrayList效率高于LinkedList, 若根据下标查找数据:arrayList效率高 若根据值来查找数据,arrayList和LinkedList效率差不多。
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
【转】Ubuntu 搭建SVN服务器