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