Java Stream: peek 和 findFirst 方法详解
Java Stream: peek 和 findFirst 方法详解
1. peek 方法
Stream 中的 peek 方法是一个中间操作,它接受一个 Consumer 参数,可以对每个元素执行一些操作,但不会改变 Stream 中的元素。它返回的是一个新的 Stream,与原始的 Stream 相同。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
.peek(System.out::println)
.map(n -> n * 2)
.forEach(System.out::println);
输出结果为:
1
2
3
4
5
2
4
6
8
10
可以看到,peek 方法打印了每个元素的值,但没有改变 Stream 中的元素。
2. findFirst 方法
Stream 中的 findFirst 方法是一个终端操作,它返回 Stream 中的第一个元素,如果 Stream 为空,则返回一个空的 Optional 对象。
例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> first = numbers.stream()
.filter(n -> n % 2 == 0)
.findFirst();
if (first.isPresent()) {
System.out.println(first.get());
}
输出结果为:
2
可以看到,findFirst 方法返回了 Stream 中第一个满足条件的元素。如果 Stream 为空,它返回一个空的 Optional 对象,需要使用 isPresent 方法来检查 Optional 是否包含值。
原文地址: https://www.cveoy.top/t/topic/lrhc 著作权归作者所有。请勿转载和采集!