Sobes.tech
Назад к вопросам
Senior
3

Расскажи жизненный цикл стрима в Java, его состояния и типы методов.

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

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

sobes.tech AI

Жизненный цикл стрима в Java состоит из трёх основных этапов:

  1. Создание стрима — получение объекта Stream из коллекции, массива или генератора.
  2. Промежуточные операции — методы, которые возвращают новый стрим, например, filter(), map(), sorted(). Они ленивы и не выполняются до терминальной операции.
  3. Терминальная операция — методы, которые запускают обработку и возвращают результат или побочный эффект, например, collect(), forEach(), reduce().

Состояния стрима:

  • Ленивое состояние — после создания и промежуточных операций, стрим не выполняет вычисления.
  • Активное состояние — при вызове терминальной операции начинается обработка данных.
  • Завершённое состояние — после выполнения терминальной операции стрим становится недействительным и не может быть использован повторно.

Типы методов:

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

Пример:

List<String> names = Arrays.asList("Anna", "Bob", "Charlie");
List<String> filtered = names.stream()
    .filter(name -> name.startsWith("A")) // промежуточная операция
    .map(String::toUpperCase)              // промежуточная операция
    .collect(Collectors.toList());        // терминальная операция