Sobes.tech
Назад к вопросам
Junior — Middle
66

Чем отличается метод peek от forEach при работе с потоками в Stream API?

Компании, где спрашивали
Тетрасофт

Ответ от нейросети

sobes.tech AI

В Stream API Java методы peek и forEach имеют разные назначения и особенности:

  • peek — промежуточная операция, которая позволяет выполнить действие над каждым элементом потока, не изменяя сам поток. Обычно используется для отладки или логирования. Поскольку это промежуточная операция, она лениво выполняется и не запускается, пока не вызовут терминальную операцию.

  • forEach — терминальная операция, которая выполняет действие над каждым элементом потока и завершает обработку. После вызова forEach поток считается потреблённым и не может быть использован дальше.

Пример:

Stream.of(1, 2, 3)
    .peek(i -> System.out.println("peek: " + i)) // отладка
    .map(i -> i * 2)
    .forEach(i -> System.out.println("forEach: " + i));

Здесь peek выводит элементы до преобразования, а forEach — после. Если вызвать только peek без терминальной операции, код не выполнится.