Stream peek(Consumer action)返回由该流的元素组成的流,并在从结果流中消耗元素时对每个元素执行附加的操作。这是一个中间操作,即它创建了一个新的流,该流在遍历时将包含与给定谓词匹配的初始流的元素。
用法:
Stream<T> peek(Consumer<? super T> action) Where, Stream is an interface and T is the type of stream elements. action is a non-interfering action to perform on the elements as they are consumed from the stream and the function returns the new stream.
注意:
- 存在此方法主要是为了支持调试,您需要在其中查看元素流过管道中特定点的情况。
- 从Java 9开始,如果元素的数量预先已知并且在流中保持不变,则由于性能优化,将不会执行.peek()语句。可以通过命令(正式)更改元素数量(例如, .filter(x-> true)。
- 在没有任何终端操作的情况下使用peek不会执行任何操作。
示例1:无需终端操作即可查看。
// Implementation of Stream.peek()
// in Java 8
import java.util.*;
class GFG {
// Driver code
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. Hence this
// code will produce no output.
list.stream().peek(System.out::println);
}
}
输出:
No Output
示例2:查看终端操作计数。
// Implementation of Stream.peek()
// in Java 8
import java.util.*;
class GFG {
// Driver code
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(), which
// is a terminal operation
list.stream().peek(System.out::println).count();
}
}
输出:
0 2 4 6 8 10
相关用法
- Java LongStream peek()用法及代码示例
- Java DoubleStream peek()用法及代码示例
- Java IntStream peek()用法及代码示例
- Java BlockingDeque peek()用法及代码示例
- Java Stream map()用法及代码示例
- Java Stream empty()用法及代码示例
- Java Stream toArray()用法及代码示例
- Java Stream builder()用法及代码示例
- Java Stream filter()用法及代码示例
- Java Stream findAny()用法及代码示例
- Java Stream findFirst()用法及代码示例
- Java Stream flatMap()用法及代码示例
- Java Stream flatMapToDouble()用法及代码示例
注:本文由纯净天空筛选整理自Sahil_Bansall大神的英文原创作品 Stream peek() in Java with examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。