java中,stream().map 与 stream().peek 区别 ?
时间: 2023-12-16 14:26:35 浏览: 180
在Java中,stream().map()和stream().peek()是两个不同的操作。其中,stream().map()是将一个函数应用于流中的每个元素,并返回一个新的流,而stream().peek()则是返回一个由原始流中的元素组成的流,同时在从生成的流中消耗元素时对每个元素执行提供的操作。
举个例子,假设我们有一个整数列表,我们想要将每个整数乘以2并打印出来。我们可以使用stream().map()来实现这个操作:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> doubledNumbers = numbers.stream().map(n -> n * 2).collect(Collectors.toList());
System.out.println(doubledNumbers);
```
输出结果为:[2, 4, 6, 8, 10]
如果我们想要查看原始列表中的每个元素,可以使用stream().peek()来实现:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().peek(System.out::println).forEach(n -> System.out.println("Doubled: " + (n * 2)));
```
输出结果为:
```
1
Doubled: 2
2
Doubled: 4
3
Doubled: 6
4
Doubled: 8
5
Doubled: 10
```
阅读全文