java8-forEach(持续发布中)
最后更新于:2022-04-02 07:57:45
**Java8 forEach**是一个工具方法用于遍历集合,比如: (list, set or map) 和stream流(java8 提供的另外一个特性),然后对集合中的每一个元素执行特定的操作。
## 1. Java 8 forEach 方法
#### 1.1. Iterable.forEach()方法
下面的代码片段显示了Iterable接口forEach方法的默认实现。我们可以通过这个方法去遍历除了Map之外的所有集合类。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/cf/ce/cfcebc1645f035a9597d6f0d120f810a_464x181.png)
上面的方法对Iterable的每个元素执行操作,直到所有元素都已处理或该操作引发异常。“ action”用来表示一个接受单个输入参数且不返回结果的操作。它是“Consumer”接口的一个实例。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/f6/ac/f6acbe2b8fb14f718a7e2f3cf940e980_568x218.png)
我们可以通过实现Consumer接口的accept方法,实现自己对集合元素需要做的自定义操作。比如:下面的代码是实现集合中字符串转大写并打印出来的操作。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/c2/41/c2415cdf1368acb1c11a0d9c7888cef8_572x374.png)
#### 1.2. Map.forEach()
Map.forEach()方法对map中的每一个entry执行特定的操作,直到所有map的entry被处理完成或者抛出异常。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/e5/fa/e5fa75e1e848d00d76447bcdfba2651e_606x337.png)
使用Map.forEach() 方法
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/f6/bf/f6bff1608225b3d5923e8986efb012c0_520x325.png)
与List等集合类遍历类似,我们可以自定义一个biconsumer action去处理key-value键值对.
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/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://docs.gechiui.com/gc-content/uploads/sites/kancloud/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://docs.gechiui.com/gc-content/uploads/sites/kancloud/bd/9a/bd9a0e0508cac02e9b5c0196d193ed9a_590x430.png)
Program output.
~~~
A=1
B=2
C=3
A
B
C
1
2
3
~~~
';