Не прячьте обязательные действия в peek или map Stream может пропустить промежуточные операции, если результат терминальной операции можно получить без обработки элементов. Пример — count() для источника с известным размером:
long size = List.of("A", "B").stream()
.peek(System.out::println)
.count();
Печать здесь не гарантирована. Замена peek() на map(), возвращающий тот же элемент, не создаёт такой гарантии. Если действие обязательно для каждого элемента, вынесите его в обычный цикл или выберите подходящую терминальную операцию. Для последовательного обхода с понятным управлением ошибками цикл часто проще. peek удобно использовать для диагностики потока, но бизнес-операции не должны зависеть от его побочных эффектов. #Java
Java Библиотека | Мы в Телеграм
long size = List.of("A", "B").stream()
.peek(System.out::println)
.count();
Печать здесь не гарантирована. Замена peek() на map(), возвращающий тот же элемент, не создаёт такой гарантии. Если действие обязательно для каждого элемента, вынесите его в обычный цикл или выберите подходящую терминальную операцию. Для последовательного обхода с понятным управлением ошибками цикл часто проще. peek удобно использовать для диагностики потока, но бизнес-операции не должны зависеть от его побочных эффектов. #Java
Java Библиотека | Мы в Телеграм
Просмотры: 164