Подробный гид по частым ошибкам при работе с
Stream API в Java: одноразовая природа потока и повторные терминальные операции (
collect(),
forEach(),
count()), изменение коллекции во время обхода, забытый
limit() у бесконечных потоков (
iterate,
generate), обработка
null и работа с
Optional через
flatMap(Optional::stream), сохранение порядка с
forEachOrdered(), эффективные операции множеств с
Set, корректное закрытие ресурсов (
Files.lines + try-with-resources), осторожность с
parallelStream() и принцип «пока нет терминального оператора — ничего не исполняется». Все проблемы сопровождаются понятными примерами и исправлениями.