算法问题,方式一为什么会比方式二执行时间更短

List list = new ArrayList<>();
for(int i=0;i list.add(i);
}
//方式一.
Long startFor = System.currentTimeMillis();
for(Iterator iterator = list.iterator();iterator.hasNext();){
Integer ii = iterator.next();
System.out.println(ii);
}
Long endFor = System.currentTimeMillis();
System.out.println(" endFor = "+endFor);
System.out.println("endFor - startFor = "+(endFor-startFor));//113298
//方式二.
Long startWhile = System.currentTimeMillis();
Iterator iterator = list.iterator();
while (iterator.hasNext()){
Integer ii = iterator.next();
System.out.println(ii);
}
Long endWhile = System.currentTimeMillis();
System.out.println("endWhile - startWhile = "+(endWhile-startWhile));//127505

113298和127505在同一个数量级上,没法排除计时精度误差和偶然情况,你必须多次运行,并且增大你的数据的规模。

Iterator iterator在for中执行完循环就不会继续占用内存,while时直到程序结束才会释放内存