Stream peek() 方法

方法语法

peek()返回一个由原始流中的元素组成的新流。

这里的 action是一个非干扰的操作,当元素从 Stream 中被消费时,它会在元素上执行。
执行action后的结果元素被放入新的Stream中。

Stream<T> peek(Consumer<? super T> action)

说明

  • Stream peek()方法是一个中间操作。
  • 它返回一个由当前流的元素组成的流。
  • 它还在作为元素的每个元素上另外执行提供的action
  • 对于并行流管道,可以在上游操作使元素可用的任何时间和线程中调用action
  • 如果action修改共享状态,它本身负责提供所需的同步。
  • peek()的存在主要是为了支持调试,我们希望在这些元素流过管道中的某个点时查看它们。
Java Stream peek()方法

Java 8 Stream peek()方法在应用给定的 Consumer操作后返回一个由原始 Stream 中的所有元素组成的新 Stream。

peek()方法是一个中间 Stream 操作。
所以通过peek()处理Stream元素,我们必须使用终端操作。

在没有任何终端操作的情况下使用 Stream.peek()没有任何作用。

欢迎 on it road

Java 8 Stream peek() 示例

使用peek()方法时不进行终端操作

没有终端操作的 Stream.peek()将什么也不做。

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream()
	.peek( System.out::println );

使用 peek() 方法时有终端操作

使用peek()API 来调试流操作并在处理流元素时记录流元素。

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> newList = list.stream()
			.peek(System.out::println)
			.collect(Collectors.toList());
System.out.println(newList);
日期:2020-09-17 00:10:05 来源:oir作者:oir