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