在进行迭代的时候,程序运行的效率也是我们挑选迭代方法的重要原因。目前有三种迭代方法:for循环、迭代器和Foreach。前两者相信大家都非常熟悉,为了更加直观分析效率的不同,我们还加入Foreach一起比较。下面我们就三种方法的概念进行理解,然后ArrayList中探索三种方法的效率。

1.概念理解

for循环:是支持迭代的一种通用结构,是最有效,最灵活的循环结构

迭代器:是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的

Foreach:通过阅读源码我们还发现一个Iterable接口。它包含了一个产生Iterator对象的iterator()方法,而且将Iterator对象被foreach用来在序列中移动。对于任何实现Iterable接口的对象都可以使用。

2.效率实例

ArrayList中的效率对比:List integers = Lists.newArrayList();

for(int i=0;i<100000;i++){

integers.add(i);

}

long start1 = System.currentTimeMillis();

for(int count =0 ;count<10;count++){

for(int i=0;i

int j=integers.get(i);

}

}

System.out.println(String.format("for循环100次时间:%s ms",System.currentTimeMillis()-start1));

long start2 = System.currentTimeMillis();

for(int count =0 ;count<10;count++) {

for (Integer i : integers) {

int j = i;

}

}

System.out.println(String.format("foreach循环100次时间:%s ms",System.currentTimeMillis()-start2));

long start3 = System.currentTimeMillis();

for(int count =0 ;count<10;count++) {

Iterator iterator = integers.iterator();

while(iterator.hasNext()){

int j=iterator.next();

}

}

System.out.println(String.format("迭代器循环100次时间:%s ms",System.currentTimeMillis()-start3));

结果:for循环100次时间:15 ms

foreach循环100次时间:25 ms

迭代器循环100次时间:20 ms

ArrayList下三者效率差不多,for循环最优,因为ArrayList通过数组来实现,数组通过索引来定位的时间复杂度是O(1),1次就能定位到,所以效率非常高。

总结:for循环便于访问顺序存储的记录,而foreach和迭代器便于访问链接存储。

以上就是java迭代器和for循环优劣的分析,可以看出for循环作为我们最常用的知识点,在使用效率上是最高的。不过在访问链接存储的用处上,还是推荐大家使用其它两种方法。

python迭代器和for循环区别_java迭代器和for循环优劣相关推荐

  1. java迭代器和for循环区别_迭代器和增强for循环

    Iterator迭代器的使用: 迭代:Iterator,即collection集合元素的通用获取方式 java.util.Iterator接口.迭代器(对集合进行遍历) 有两个常用的方法 Boolea ...

  2. java foreach和for循环区别_java相关:老生常谈foreach(增强for循环)和for的区别

    java相关:老生常谈foreach(增强for循环)和for的区别 发布于 2020-8-18| 复制链接 下面小妖就为大家带来一篇老生常谈foreach(增强for循环)和for的区别.小妖觉得挺 ...

  3. java中循环语句_Java语法基础之循环结构语句详解

    一.循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循 ...

  4. java do while 循环语句_java中do...while循环语句使用方法详解

    do..while循环语句也称为后测试循环语句,它的循环重复执行方式,也是利用一个条件来控制是否要继续重复执行这个语句.与while循环所不同的是,它先执行一次循环语句,然后再去判断 - do...w ...

  5. java中for循环嵌套_Java中的for循环嵌套

    摘要 Java嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构.whiledo.while.for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for ...

  6. python迭代器和for循环区别_python迭代器和for循环区别,

    详细内容 迭代器(iterator):迭代器对象必须同时实现__iter__和__next__方法才是迭代器.对于迭代器来说,__iter__ 返回的是它自身 self,__next__ 则是返回迭代 ...

  7. python迭代器和for循环区别_python迭代器和for循环区别

    迭代器(iterator):迭代器对象必须同时实现__iter__和__next__方法才是迭代器.对于迭代器来说,__iter__ 返回的是它自身 self,__next__ 则是返回迭代器中的下一 ...

  8. java迭代器删除元素出异常_java迭代器移除元素出现并发修改异常的原因及解决...

    迭代器(Iterator的对象)主要用于遍历集合,体现的就是迭代器模式. Iterator接口定义了以下四种方法. boolean hasNext():如果集合还没遍历完就返回true. Object ...

  9. python字符串赋值与java区别_java和python细节总结和java中string 的+操作

    //JAVA中对arrayList的初始化,能够分配空间,不能之间让一个ArrayList赋值给另外一个ArrayList,这样是引用赋值,当一个改变时候,另外一个也改变 List tmp = new ...

最新文章

  1. 《数据科学:R语言实现》——3.9 排列数据
  2. UVa1377 Ruler(dfs或者bfs)
  3. 【安全漏洞】浅谈Bypass Waf (基础-实战)
  4. 【直播】回放与PPT下载!深度学习如何用于摄影图像的处理?
  5. Fluent Ribbon 第三步 应用程序菜单
  6. SpringBoot 项目打包部署
  7. python数据透视、有的value不能同时输出_python – Pandas数据透视表ValueError:索引包含重复的条目,无法重新整形...
  8. 当 Egg 遇到 TypeScript,收获茶叶蛋一枚 #27
  9. asp.net中验证控件的使用方法
  10. (47)Xilinx VIO IP核配置(八)(第10天)
  11. Vue之不常注意的点
  12. [圣诞大礼][android控]平板电脑HD精品游戏软件合集
  13. 幼儿园计算机课程心得,幼儿主题式课程教学心得体会
  14. 编译问题:App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecur
  15. 泛泰A870(高通APQ8064t 600 cpu) Mokee4.4.2(Android4.4) 图赏
  16. archlinux下Thinkpad的trackpoint配置
  17. 所罗门王的宝藏(高斯消元)
  18. CEC2019:麻雀搜索算法(提供Matlab代码)
  19. 2022-2027年中国医疗服务机器人行业市场调研及未来发展趋势预测报告
  20. 西红柿-生吃还是熟吃

热门文章

  1. 【转帖】CPLD/FPGA开发流程及其开发工具介绍
  2. 分析Apache Log4j2 远程代码执行漏洞
  3. Http协议3XX重定向介绍及301跳转和302跳转应用场景
  4. 汽车发动机和变速箱相关内容整理
  5. MySQL慢查询日志每天定时切割
  6. 分布式任务系统cronsun
  7. 【题目定义桌子类、圆桌类,在子类圆桌实现了接口CalculateAble的getArea()方法。】
  8. OpenCV 边缘检测之Sobel算子
  9. 个人博客:后台(登录)
  10. 如何解决软件项目管理中的冲突?