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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

В 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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее