Назад к вопросам
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 без терминальной операции, код не выполнится.