之朝百 2022-05-12 09:41 采纳率: 100%
浏览 45
已结题

关于迭代器与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

  • 写回答

1条回答 默认 最新

  • Tomshidi 2022-05-12 09:52
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月12日
  • 已采纳回答 5月12日
  • 创建了问题 5月12日

悬赏问题

  • ¥15 求一个解密绿盾的代码或者程序,有偿!
  • ¥15 word样式右侧翻页键消失
  • ¥15 springboot+vue 集成keycloak sso到阿里云
  • ¥15 win7系统进入桌面过一秒后突然黑屏
  • ¥30 backtrader对于期货交易的现金和资产计算的问题
  • ¥15 求C# .net4.8小报表工具
  • ¥15 安装虚拟机时出现问题
  • ¥15 Selenium+docker Chrome不能运行
  • ¥15 mac电脑,安装charles后无法正常抓包
  • ¥18 visio打开文件一直显示文件未找到