Sobes.tech
Назад к вопросам
Middle
5

Расскажи о стримах в Java: на какие группы делятся методы и в чём разница?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В Java Stream API методы можно условно разделить на две группы:

  1. Промежуточные (intermediate) методы — возвращают новый стрим, позволяют строить цепочку операций, не выполняя их сразу. Примеры: filter(), map(), sorted(), distinct(), limit(), skip().

  2. Терминальные (terminal) методы — запускают обработку стрима и возвращают результат или побочный эффект. После вызова терминального метода стрим считается потреблённым и больше не используется. Примеры: collect(), forEach(), reduce(), count(), anyMatch(), allMatch().

Разница в том, что промежуточные методы ленивы — они откладывают выполнение, а терминальные — инициируют обработку данных.

Пример:

List<String> names = List.of("Anna", "Bob", "Charlie", "David");

long count = names.stream()
    .filter(name -> name.length() > 3)  // промежуточный
    .map(String::toUpperCase)           // промежуточный
    .count();                          // терминальный

System.out.println(count); // Выведет количество имён длиной больше 3