关于迭代器与for循环效率问题

教材是这么说的:迭代器效率高于传统的for循环

img


然后我测试了一下

import java.util.Iterator;
import java.util.List;

public class demo_Class {
    List<Integer> list = List.of(1, 2, 1,2,3,5,5,6,7,8,9,0,2,3,4);
    public static void main(String [] arg){
        final demo_Class demo_class = new demo_Class();

        Long start1 = System.currentTimeMillis();
        for (int i =0;i < 10000000;i++){
            demo_class.go1();
        }
        Long end1 = System.currentTimeMillis();
        System.out.println("go1 time:"+(end1-start1));

        Long start2 = System.currentTimeMillis();
        for (int i =0;i < 10000000;i++){
            demo_class.go2();
        }
        Long end2 = System.currentTimeMillis();
        System.out.println("go2 time:"+(end2-start2));

    }
    public void go1(){
        for(Iterator<Integer> i = list.iterator();i.hasNext();){
            if (i.next() == 4){
                return;
            }
        }
    }
    public void go2(){
        for(int index=0; index < list.size();index++){
            if (list.get(index) == 4){
                return;
            }
        }
    }
}

结果:跑出来是这样的(forearch一样用时较多) ,传统的for循环用时反而比较少,这是为啥,跑了好几遍了

img

你得看一下用List<Integer> list = List.of(1, 2, 1,2,3,5,5,6,7,8,9,0,2,3,4)的到的list具体是啥类型,如果是ArrayList,那确实传统的方式最快。