![](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
~~~
- 前言
- 1.lambda表达式会用了么
- 2.初识Stream-API
- 3.Stream的filter与谓语逻辑
- 4.Stream管道流的map操作
- 5.Stream的状态与并行操作
- 6.Stream性能差?不要人云亦云
- 7.像使用SQL一样排序集合
- 8.函数式接口Comparator
- 9.Stream查找与匹配元素
- 10.Stream集合元素归约
- 11.StreamAPI终端操作
- 12.java8如何排序Map
- Stream流逐行文件处理
- java8-forEach(持续发布中)
- 笔者其它作品推荐
- vue深入浅出系列
- 手摸手教你学Spring Boot2.0
- Spring Security-JWT-OAuth2一本通
- 实战前后端分离RBAC权限管理系统
- 实战SpringCloud微服务从青铜到王者