高效Java第四十六条for-each循环优于传统的for循环

传统for循环的缺点

上面这些做法都比while循环更好。
迭代器和索引变量都会造成一些混乱。

for-each循环的优势

for-each循环完全隐藏了迭代器或索引变量,避免了混乱和出错的可能性。


:可以读作“在......里面”
for-each循环不会有性能损失。在某些情况下,比起普通的for循环,它还稍有些性能优势,它对数组索引的边界值只计算一次。

for-each循环和for循环在多个集合迭代时的对比

在对多个集合进行嵌套迭代时,for-each循环相对于传统的for循环优势更明显。

对外部的集合suits调用了太多次的next方法。
下面这个例子不会报错:


如何修复bug:
必须在外部循环的作用域中添加一个变量来保存外部元素:

for-each循环没有这个问题:

for-each循环可以遍历集合、数组和任何实现Iterable接口的对象。

for-each可循环在简洁性和预防bug方面有着传统的for循环无法比拟的优势,并且没有性能损失。

无法使用for-each循环的情况——过滤

需要遍历集合,并删除选定的元素,就需要使用显示的迭代器,以便可以调用它的remove方法。

无法使用for-each循环的情况——转换

需要遍历列表或数组,并取代它部分或全部的元素值,就需要列表迭代器或数组索引,以便设定元素的值。

无法使用for-each循环的情况——平行迭代

需要并行地遍历多个集合,就需要显示的控制迭代器或索引变量,以便所有迭代器或索引变量都可以同步前移。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 53.计算字符 在字符串中获取字符值的数量, 可以使用字符串字符属性中的计数属性: let unusualMena...
    无沣阅读 1,141评论 0 4
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,291评论 0 16
  • “有的人死了,它却还活着”如同马尔克斯。他是值得被铭记的。他用笔尖描绘的文字像是精美的素描,在一页页苍白的图纸上绘...
    西恩小姐_阅读 560评论 0 0
  • 我的亲人,这似乎是一个很适合学生时代作文的命题,我却感到无从下笔。我是一个生活在幸福的家庭里的孩子,父母也没有什么...
    亭子文阅读 345评论 1 6