Sobes.tech
Назад к вопросам
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 — терминальная операция.