Метод Stream peek() в Java с примерами
В Java Stream предоставляет мощную альтернативу обработке данных, где здесь мы обсудим один из очень часто используемых методов с именем peek(), который, будучи действием потребителя, в основном возвращает поток, состоящий из элементов этого потока, дополнительно выполняя предоставленное действие. для каждого элемента по мере того, как элементы потребляются из результирующего потока. Это промежуточная операция, так как она создает новый поток, который при обходе содержит элементы исходного потока, соответствующие заданному предикату.
Синтаксис:
Stream<T> peek(Consumer<? super T> action)
Здесь Stream — это интерфейс, а T — тип элемента потока. action — это не мешающее действие, выполняемое над элементами по мере того, как они потребляются из потока, и функция возвращает новый поток. Теперь нам нужно понять жизненный цикл метода peek() через его внутреннюю работу с помощью чистых программ Java, перечисленных ниже как следует:
Note:
- This method exists mainly to support debugging, where you want to see the elements as they flow past a certain point in a pipeline.
- Since Java 9, if the number of elements is known in advance and unchanged in the stream, the .peek () statement will not be executed due to performance optimization. It is possible to force its operation by a command (formal) changing the number of elements eg. .filter (x -> true).
- Using peek without any terminal operation does nothing.
Пример 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(); } } |
Выход:
0 2 4 6 8 10