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 是否包含值。

Java Stream: peek 和 findFirst 方法详解

原文地址: https://www.cveoy.top/t/topic/lrhc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录