Java中的Stream peek()方法及其示例

在Java中,Stream为处理数据提供了一种强大的替代方法,在这里我们将讨论一种非常常用的方法,名为 peek()这是一种消费行为 基本上返回一个由该流的元素组成的流,当元素从结果流中消耗时,对每个元素执行提供的操作。这是一个 中间操作, 当它创建一个新的流时,该流在被遍历时包含与给定谓词匹配的初始流元素。

null

语法:

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

这里,Stream是一个接口,T是Stream元素的类型。 行动 是一个 不干涉 在元素从流中消耗时对其执行的操作,函数返回新的流。现在我们需要了解peek()方法的生命周期,通过它的内部工作,通过干净的java程序,如下所示:

注:

  • 这种方法的存在主要是为了支持调试,在调试中,您希望在元素流过管道中的某个点时看到它们。
  • 自Java9以来,如果元素的数量预先已知,并且在流中没有变化,则。peek()语句将 不执行 由于性能优化。可以通过改变元素数量的命令(正式)强制其操作,例如。过滤器(x->true)。
  • 在没有任何终端操作的情况下使用peek不会产生任何效果。

例1:

JAVA

// Java Program to Illustrate peek() Method
// of Stream class Without Terminal Operation Count
// Importing required classes
import java.util.*;
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating a list of Integers
List<Integer> list
= Arrays.asList( 0 , 2 , 4 , 6 , 8 , 10 );
// Using peek without any terminal
// operation does nothing
list.stream().peek(System.out::println);
}
}


输出:

图片[1]-Java中的Stream peek()方法及其示例-yiteyi-C++库

从上面的输出中,我们可以看出这段代码不会产生任何输出

例2:

JAVA

// Java Program to Illustrate peek() Method
// of Stream class With Terminal Operation Count
// Importing required classes
import java.util.*;
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating a list of Integers
List<Integer> list
= Arrays.asList( 0 , 2 , 4 , 6 , 8 , 10 );
// Using peek with count() method,Method
// which is a terminal operation
list.stream().peek(System.out::println).count();
}
}


输出:

0246810

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享