ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
![](https://cdn.zimug.com/wx-zimug.png) **Java8 forEach**是一个工具方法用于遍历集合,比如: (list, set or map) 和stream流(java8 提供的另外一个特性),然后对集合中的每一个元素执行特定的操作。 ## 1. Java 8 forEach 方法 #### 1.1. Iterable.forEach()方法 下面的代码片段显示了Iterable接口forEach方法的默认实现。我们可以通过这个方法去遍历除了Map之外的所有集合类。 ![](https://img.kancloud.cn/cf/ce/cfcebc1645f035a9597d6f0d120f810a_464x181.png) 上面的方法对Iterable的每个元素执行操作,直到所有元素都已处理或该操作引发异常。“ action”用来表示一个接受单个输入参数且不返回结果的操作。它是“Consumer”接口的一个实例。 ![](https://img.kancloud.cn/f6/ac/f6acbe2b8fb14f718a7e2f3cf940e980_568x218.png) 我们可以通过实现Consumer接口的accept方法,实现自己对集合元素需要做的自定义操作。比如:下面的代码是实现集合中字符串转大写并打印出来的操作。 ![](https://img.kancloud.cn/c2/41/c2415cdf1368acb1c11a0d9c7888cef8_572x374.png) #### 1.2. Map.forEach() Map.forEach()方法对map中的每一个entry执行特定的操作,直到所有map的entry被处理完成或者抛出异常。 ![](https://img.kancloud.cn/e5/fa/e5fa75e1e848d00d76447bcdfba2651e_606x337.png) 使用Map.forEach() 方法 ![](https://img.kancloud.cn/f6/bf/f6bff1608225b3d5923e8986efb012c0_520x325.png) 与List等集合类遍历类似,我们可以自定义一个biconsumer action去处理key-value键值对. ![](https://img.kancloud.cn/63/0f/630fee49958b3af7322278dbf8c4b71d_435x307.png) Program output. ~~~ Key is : A Value is : 1 Key is : B Value is : 2 Key is : C Value is : 3 ~~~ ## 2. 使用forEach遍历 List的例子 下面的代码使用forEach遍历 List中的所有偶数。 ![](https://img.kancloud.cn/71/ef/71ef84531ebb29008d25f61806223db5_476x180.png) 输出: ~~~ 2 4 ~~~ ## 3. 使用forEach 遍历 Map We already saw above program to iterate over all entries of a[HashMap](https://howtodoinjava.com/java-hashmap/)and perform an action. We can also iterate over map keys and values and perform any action on all elements. Java 8 forEach map entries ![](https://img.kancloud.cn/bd/9a/bd9a0e0508cac02e9b5c0196d193ed9a_590x430.png) Program output. ~~~ A=1 B=2 C=3 A B C 1 2 3 ~~~