Java 中增强型 for 循环和迭代器有哪些优势?

2022-09-01 22:49:55

我想知道Java +5中增强的for循环和迭代器有什么优点?


答案 1

Stephen Colebourne(Joda-Time,JSR-310等)很好地总结了优点和缺点,针对每个循环迭代控制建议进行了增强,以在Java 7中扩展它:

功能摘要:

扩展 Java 5 for-each 循环,以允许访问循环索引(无论这是第一次迭代还是最后一次迭代),并除去当前项。

主要优势

for-each 循环几乎可以肯定是 Java 5 中最受欢迎的新功能。它之所以有效,是因为它增加了抽象级别 - 开发人员不必表达如何循环列表或数组(使用索引或迭代器)的低级细节,而开发人员只需声明他们想要循环,语言负责其余的工作。但是,只要开发人员需要访问索引或删除项目,所有好处就会丢失

每部作品的原始Java 5在许多问题上都采取了相对保守的立场,旨在解决80%的情况。但是,循环是编码中常见的形式,因此剩余的20%未处理的内容代表了重要的代码体。

将循环从 每个循环转换回基于索引或迭代器的过程是痛苦的。这是因为旧的循环样式如果级别明显较低,则更详细且不太清晰。这也是痛苦的,因为大多数IDE不支持这种“去重构”。

主要优点:

一个常见的编码习语以比现在更高的抽象来表达。这有助于可读性和清晰度

...

总而言之,增强的 for 循环提供了一个简洁的更高级别语法来循环列表或数组,从而提高了清晰度和可读性。但是,它缺少一些部分:允许访问索引循环或删除项目。

另请参见


答案 2

对我来说,很明显,主要优点是可读性。

for(Integer i : list){
   ....
}

显然比类似的东西好

for(int i=0; i < list.size(); ++i){
  ....
}