在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); } } |
输出:
从上面的输出中,我们可以看出这段代码不会产生任何输出
例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