stream().peek
时间: 2023-10-13 18:25:42 浏览: 71
`stream().peek()` 是 Java 8 中提供的一种函数式编程的操作方式,它可以在对流中的元素进行操作的同时,不会改变流中元素的数量或者类型,类似于一个中间操作。具体来说,`peek()` 接收一个 Consumer 参数,用于对流中的每个元素执行指定的操作,然后将该元素返回到流中。
例如,可以使用 `peek()` 方法在打印每个元素的同时,对元素进行一些操作:
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
.peek(num -> System.out.println("processing number: " + num))
.map(num -> num * 2)
.forEach(System.out::println);
```
输出:
```
processing number: 1
2
processing number: 2
4
processing number: 3
6
processing number: 4
8
processing number: 5
10
```
可以看到,使用 `peek()` 方法不会改变流中的元素,而是在对每个元素进行操作的同时,将该元素返回到流中进行后续操作。
相关问题
stream.peek
`stream.peek()` 是 Java 中 Stream API 中的一个方法,它返回流中下一个元素,但不消费该元素。也就是说,它允许你查看流中下一个元素,而不会改变流的状态。如果流为空,则返回 `null`。这个方法可以帮助我们在不改变流的状态的情况下,查看流中下一个元素是否满足某些条件,以便做出相应的处理。
java stream.peek
Java Stream 中的 peek() 方法会返回一个与原始流相同的新流,但其操作在每个元素上执行指定的操作。peek() 方法可以被用于调试,例如,可以打印出每个元素的值或检查流中元素的状态。
当您使用 peek() 方法时,请确保您的操作不会更改流中元素的状态,因为这可能会导致预期外的结果。peek() 方法通常用于调试和记录流的中间状态。
以下是一个示例:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
list.stream()
.peek(e -> System.out.println("Processing element: " + e))
.map(String::toUpperCase)
.peek(e -> System.out.println("Uppercase element: " + e))
.collect(Collectors.toList());
```
输出结果为:
```
Processing element: apple
Uppercase element: APPLE
Processing element: banana
Uppercase element: BANANA
Processing element: orange
Uppercase element: ORANGE
```
阅读全文
相关推荐















