我自己在我今天用上面提到的几点做的一个小实验中感到惊讶。所以我所做的是,我在一个链接列表中插入了一定数量的元素,并使用上面提到的三种方法对其进行迭代 1)使用高级循环 2)使用迭代器 3) 使用简单循环和 get()
我想像你们这样的程序员可以通过查看代码来更好地理解我做了什么。
long advanced_timeElapsed,iterating_timeElapsed,simple_timeElapsed;
long first=System.nanoTime();
for(Integer i: myList){
Integer b=i;
}
long end= System.nanoTime();
advanced_timeElapsed=end-first;
System.out.println("Time for Advanced for loop:"+advanced_timeElapsed);
first=System.nanoTime();
Iterator<Integer> it = myList.iterator();
while(it.hasNext())
{
Integer b=it.next();
}
end= System.nanoTime();
iterating_timeElapsed=end-first;
System.out.println("Time for Iterating Loop:"+iterating_timeElapsed);
first=System.nanoTime();
int counter=0;
int size= myList.size();
while(counter<size)
{
Integer b=myList.get(counter);
counter++;
}
end= System.nanoTime();
simple_timeElapsed=end-first;
System.out.println("Time for Simple Loop:"+simple_timeElapsed);
结果不是我所期望的。以下是3种情况下经过的时间图。
Y 轴时间 已用 X 轴测试用例
测试用例1:10 输入
测试用例2:30 输入
测试用例3:50 输入
测试用例4:100 输入
测试用例5:150 输入
测试用例6:300 输入
测试用例7:500 输入
测试用例8:1000 输入
测试用例9:2000 输入
测试用例10:5000 输入
测试用例11:10000 输入
测试用例12:100000 输入
在这里,您可以看到简单循环的性能比其他循环好得多,如果您在上面的代码中发现任何错误,请回复,我会再次检查。在我挖掘字节码并查看引擎盖下发生的事情后,将进一步更新。我很抱歉这么长的回应,但我喜欢描述。菲利普