【 注:此为 Java 新玩法第三篇 】
尽管 for 循环包含许多可变部分,但许多开发人员仍非常熟悉它,并会不假思索地使用它。从 Java 8 开始,我们有多个强大的新方法可帮助简化复杂迭代。在本文中,您将了解如何使用 IntStream 方法range、iterate 和 limit 来迭代范围和跳过范围中的值。您还将了解新的 takeWhile 和 dropWhile 方法(即将在 Java 9 中引入)。
下面来学习下3个消除JavaFor循环复杂迭代中的麻烦的新方法。
1.for 循环的麻烦
在 Java 语言的第 1 个版本中就开始引入了传统的 for 循环,它的更简单的变体 ForEach 是在 Java 5 中引入的。大部分开发人员更喜欢使用ForEach 执行日常迭代,但对于迭代一个范围或跳过范围中的值等操作,他们仍会使用 for。
for 循环非常强大,但它包含太多可变部分。甚至在打印 get/set(取值/赋值) 提示的最简单任务中,也可以看出这一点:
清单 1. 完成一个简单任务的复杂代码
7.结束语
尽管传统 for 循环非常强大,但它有些过于复杂。Java 8 和 Java 9 中的新方法可帮助简化迭代,甚至是简化复杂的迭代。方法 range、iterate 和 limit 的可变部分较少,这有助于提高代码效率。这些方法还满足了 Java 的一个长期以来的要求,那就是 局部变量 必须声明为 final,然后才能从内部类访问它。将一个可变索引变量更换为实际的 final 参数只有很小的语义差别,但它减少了大量垃圾变量。最终您会得到更简单、更优雅的代码。