通过三种不同的方式遍历ArrayList,测试的结果时间相差比较大,三种遍历方式不管怎么调整顺序,第一种遍历的方式总是时间会多出很多,不知道为什么,求大神指点。
public static void compare() {
List<String> list = new ArrayList<String>();
Set<String> set = new HashSet<String>();
for(int i=0;i<100000;i++) {
list.add("a"+i);
}
long t1=0L,t2=0L;
////two
t1 = System.currentTimeMillis();
for(int i=0; i<list.size(); i++) {
set.add(list.get(i));
}
t2 = System.currentTimeMillis();
System.out.println("size遍历的时间为:"+(t2-t1)+"mm");
////three
t1 = System.currentTimeMillis();
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
set.add((String)iterator.next());
}
t2 = System.currentTimeMillis();
System.out.println("iterator遍历的时间为:"+(t2-t1)+"mm");
////one
t1 = System.currentTimeMillis();
for(String s : list) {
set.add(s);
}
t2 = System.currentTimeMillis();
System.out.println("forEach遍历的时间为:"+(t2-t1)+"mm");
}
这是测试的时间:
size遍历的时间为:112mm
iterator遍历的时间为:20mm
forEach遍历的时间为:18mm