Ответ
Промежуточные операции (intermediate operations) возвращают новый объект Stream, позволяя строить цепочки вызовов (fluent interface). Они являются "ленивыми" (lazy) — вычисления происходят только при вызове терминальной операции.
Пример цепочки:
List<String> result = names.stream() // Источник
.filter(name -> name.startsWith("J")) // Промежуточная операция -> Stream<String>
.map(String::toUpperCase) // Промежуточная операция -> Stream<String>
.collect(Collectors.toList()); // Терминальная операция (запускает обработку)
Распространенные промежуточные операции:
- Фильтрация и преобразование:
filter(),map(),flatMap() - Управление порядком и уникальностью:
distinct(),sorted(),limit(),skip() - Отладка:
peek()
Важно: Поскольку возвращается Stream, промежуточные операции можно объединять в конвейер (pipeline), но без терминальной операции никакие данные обработаны не будут.