美文网首页程序员Java 杂谈Android知识
高效Java第四十六条for-each循环优于传统的for循环

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

作者: 每天学点编程 | 来源:发表于2017-07-17 21:31 被阅读0次

传统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循环的情况——平行迭代

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

相关文章

网友评论

    本文标题:高效Java第四十六条for-each循环优于传统的for循环

    本文链接:https://www.haomeiwen.com/subject/efiqkxtx.html