Метод Stream peek() в Java с примерами

Опубликовано: 15 Сентября, 2022

В 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