Java forEach 教程显示了如何使用 Java 8 forEach()
方法。 我们与消费者合作,并在列表,映射和集合集合上展示forEach()
。
forEach()
方法是 Java 8 中引入的。它为程序员提供了一种新的,简洁的迭代集合的方法。
forEach()
方法对Iterable
的每个元素执行给定的操作,直到所有元素都已处理或该操作引发异常。
这是forEach()
方法的语法。
Consumer
接口
Consumer
接口是一个功能接口(具有单个抽象方法的接口),它接受单个输入并且不返回结果。
这是Consumer
接口的定义。
com/zetcode/JavaForEachListConsumer.java
在此示例中,我们使用forEach()
遍历字符串列表。 Java lambda 表达式可以缩短此语法。
Lambda 表达式
Lambda 表达式主要用于定义功能接口的内联实现,即仅具有单个方法的接口。 Lambda 表达式是使用->
lambda 运算符创建的。
com/zetcode/JavaForEachListLambda.java
这里我们有同样的例子。 lambda 表达式使示例更简洁。
Java 映射上的forEach
以下示例在映射上使用forEach()
。
com/zetcode/JavaForEachMap.java
我们有一个字符串/整数对的映射。 使用forEach()
方法,我们遍历映射并打印其键/值对。
在下一个示例中,我们在代码中显式显示Consumer
和Map.Entry
。
com/zetcode/JavaForEachMap2.java
该示例在一个条目集上循环,该条目集是通过entrySet()
检索的。
Java 集合上的forEach
以下示例在一个集合上使用forEach()
。
com/zetcode/JavaForEachSet.java
我们有一组字符串。 使用forEach()
方法,我们遍历集合并打印其值。
在数组上使用 forEach
以下示例在数组上使用forEach()
。
com/zetcode/JavaForEachArray.java
在示例中,我们有一个整数数组。 我们使用Arrays.stream()
方法将数组转换为流。 然后forEach()
方法遍历元素并将它们打印到控制台。
过滤列表
在使用forEach()
遍历数据之前,我们可以轻松过滤数据。
com/zetcode/JavaForEachListFilter.java
在此示例中,我们过滤字符串列表,并将过滤后的列表打印到控制台。 仅显示具有四个字符的字符串。
IntConsumer
,LongConsumer
,DoubleConsumer
从 Java 8 开始,我们为原始数据类型内置了使用者接口:IntConsumer
,LongConsumer
和DoubleConsumer
。
com/zetcode/JavaForEachConsSpec.java
在示例中,我们创建了三种类型的使用者,并使用forEach()
对其进行了迭代。
在本教程中,我们介绍了 Java 8 forEach()
方法。 我们已经介绍了使用者,并在列表,映射和集合上使用了forEach()
。