Назад к вопросам
Junior — Middle
74
Чем отличаются промежуточные и конечные операции в поточных вычислениях?
Ответ от нейросети
sobes.tech AI
В поточных вычислениях (Streams) в Java операции делятся на промежуточные (intermediate) и конечные (terminal).
-
Промежуточные операции возвращают новый поток и являются ленивыми — они не выполняются сразу, а откладываются до вызова конечной операции. Примеры:
filter(),map(),sorted(). -
Конечные операции запускают обработку потока и возвращают результат или побочный эффект. После их вызова поток считается закрытым. Примеры:
collect(),forEach(),reduce().
Пример:
List<String> names = Arrays.asList("Anna", "Bob", "Charlie");
List<String> filtered = names.stream()
.filter(name -> name.startsWith("A")) // промежуточная
.map(String::toUpperCase) // промежуточная
.collect(Collectors.toList()); // конечная
Здесь фильтрация и преобразование не выполняются до вызова collect(), которая запускает весь поток.