stream().map()和stream.peek()有什么区别
时间: 2024-01-04 12:19:45 浏览: 86
stream().map()和stream.peek()在使用上有以下区别:
1. map()方法是将流中的每个元素都应用给定的函数,并将结果组成一个新的流返回。它会对流中的每个元素进行转换操作,并返回转换后的结果。map()方法会生成一个新的流,原始流的元素不会被修改。
2. peek()方法是对流中的每个元素执行给定的操作,但不会改变流中的元素。它可以用于调试或观察流中的元素,但不能用于修改流中的元素。peek()方法返回的是与原始流相同的流。
下面是一个示例代码来演示map()和peek()的区别:
```java
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// 使用map()方法将每个名字转换为大写
List<String> upperCaseNames = names.stream()
.map(String::toUpperCase)
.toList();
System.out.println(upperCaseNames); // 输出:[ALICE, BOB, CHARLIE]
// 使用peek()方法观察每个名字,并不改变名字本身
List<String> peekedNames = names.stream()
.peek(System.out::println)
.toList();
System.out.println(peekedNames); // 输出:[Alice, Bob, Charlie]
}
}
```
阅读全文