stream().peek
时间: 2023-07-21 12:16:25 浏览: 105
String_Concat.java
`stream().peek()` 是 Java 8 中 Stream API 提供的一种操作方式,可以在不改变 Stream 中元素的情况下,对元素进行处理。
`peek()` 方法接收一个 Consumer 接口类型的参数,对流中的每个元素执行该操作,操作完成后返回原元素。该方法常用于对元素进行调试、日志打印或者对元素进行中间处理等场景。
下面是一个示例代码:
```
List<String> list = Arrays.asList("apple", "banana", "pear", "orange");
list.stream()
.filter(str -> str.startsWith("a"))
.peek(str -> System.out.println("Before map: " + str))
.map(String::toUpperCase)
.peek(str -> System.out.println("After map: " + str))
.collect(Collectors.toList());
```
运行上述代码,会输出以下内容:
```
Before map: apple
After map: APPLE
```
可以看到,在执行 `map()` 操作之前,我们使用 `peek()` 方法对符合条件的元素进行了日志输出,然后再执行了 `map()` 操作。在 `map()` 操作之后,我们又使用 `peek()` 方法对处理后的元素进行了日志输出。
注意:`peek()` 方法是一种中间操作,只有在遇到终止操作时,才会触发流的处理。
阅读全文