返回
流式操作:Java 8 Stream 中操作类型和 peek 的使用
闲谈
2024-01-23 02:49:37
在 Java 8 中,Stream 是一种强大且通用的工具,可用于处理数据集合。Stream 操作可以分为两大类:中间操作和终止操作。中间操作不会立即计算结果,而是生成一个新的流。终止操作会立即计算结果,并且返回一个值或执行某个操作。
中间操作可以分为两类:有状态操作和无状态操作。有状态操作会修改流中的元素,而无状态操作不会修改流中的元素。peek 方法是一种特殊的有状态中间操作,允许我们在流式操作的中间阶段观察流中的元素。
peek 方法的语法如下:
<R> Stream<R> peek(Consumer<? super T> action);
其中:
- T 是流中元素的类型。
- R 是 peek 操作返回的流中元素的类型。
- Consumer 是一个函数式接口,它接受一个参数并返回 void。
peek 方法接收一个 Consumer 作为参数,该 Consumer 会对流中的每个元素执行某个操作。Consumer 可以做任何事情,例如打印元素、修改元素或将元素存储到另一个集合中。
例如,以下代码使用 peek 方法来打印流中的元素:
List<String> strings = Arrays.asList("a", "b", "c", "d", "e");
strings.stream()
.peek(System.out::println)
.count();
输出结果:
a
b
c
d
e
5
如你所见,peek 方法不会修改流中的元素。它只是允许我们在流式操作的中间阶段观察流中的元素。
peek 方法可以用于调试和监控流式操作。例如,我们可以使用 peek 方法来检查流中的元素是否满足某个条件。以下代码使用 peek 方法来检查流中的元素是否大于 2:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
.peek(n -> {
if (n > 2) {
System.out.println(n);
}
})
.count();
输出结果:
3
4
5
3
如你所见,peek 方法只打印了大于 2 的元素。
peek 方法是一个非常有用的工具,可以用于调试和监控流式操作。它允许我们在流式操作的中间阶段观察流中的元素,并根据需要执行某些操作。