List 三种删除方法性能对比
三种方法分别是for循环的remove,foreach循环的remove和removeAll
实现代码
// 创建一个数组
long t1=System.currentTimeMillis();
List<Long> a = new ArrayList<>();
for(long i=1; i<=100000; i++){
a.add(i);
}
long t2=System.currentTimeMillis();
System.out.println("插入时间="+(t2-t1));
// for循环一个一个删除
List<Long> c = new ArrayList<>(a);
t1=System.currentTimeMillis();
for(long i=1; i<=100000; i++){
c.remove(i);
}
t2=System.currentTimeMillis();
System.out.println("for循环一个一个删除时间="+(t2-t1));
// foreach循环一个一个删除
List<Long> d = new ArrayList<>(a);
t1=System.currentTimeMillis();
for(Long i : a){
d.remove(i);
}
t2=System.currentTimeMillis();
System.out.println("foreach循环一个一个删除时间="+(t2-t1));
// removeAll删除时间
List<Long> e = new ArrayList<>(a);
t1=System.currentTimeMillis();
e.removeAll(a);
t2=System.currentTimeMillis();
System.out.println("removeAll删除时间="+(t2-t1));
运行结果
插入时间=15
for循环一个一个删除时间=1268
foreach循环一个一个删除时间=1956
removeAll删除时间=7043
remove方法比add方法要更加消耗性能10万个long,相差了差不多85倍;for循环一个一个删除时间最短,直接执行removeAll性能最差。