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

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

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效