Работал ли со Stream API в Java? Какие методы знаешь? В чём разница между терминальными и промежуточными операциями?

В Stream API (например, в Java) операции делятся на промежуточные (intermediate) и терминальные (terminal).

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

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

В Stream API (например, в Java) операции делятся на промежуточные (intermediate) и терминальные (terminal).

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

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

В Stream API (например, в Java) операции делятся на промежуточные (intermediate) и терминальные (terminal).

Промежуточные функции:

  • Возвращают новый поток (Stream), позволяя строить цепочку операций.
  • Ленивы — не выполняются сразу, а только при вызове терминальной операции.
  • Примеры: filter(), map(), sorted().

Терминальные функции:

  • Завершают цепочку операций и запускают обработку данных.
  • Возвращают результат (например, коллекцию, число, void).
  • Примеры: collect(), forEach(), reduce().

Влияние на выполнение:

  • Промежуточные операции накапливаются и не выполняются до тех пор, пока не вызовется терминальная операция.
  • Это позволяет оптимизировать выполнение, например, выполнять операции поэлементно и прерывать обработку при необходимости.

Пример:

List<String> result = list.stream()
    .filter(s -> s.startsWith("A"))  // промежуточная
    .map(String::toUpperCase)          // промежуточная
    .collect(Collectors.toList());    // терминальная

Здесь фильтрация и преобразование не выполняются сразу, а только при вызове collect(). Это повышает эффективность и позволяет строить гибкие конвейеры обработки данных.

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

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

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

Подробнее