> Что такое стримы в Java и как они работают (Java)

Уровень: junior · Роль: backend · Категория: Технические вопросы

Компании: Mosline

Стек: Java

> Пример ответа

Стримы (Stream API) - это функциональный способ обработки последовательностей данных, введённый в Java 8. Они позволяют выполнять операции над коллекциями, массивами или другими источниками данных в декларативном стиле, похожем на SQL-запросы или цепочки функций в функциональных языках.Стрим не хранит данные, а представляет собой конвейер операций, который может быть:

  • Промежуточным (intermediate) - возвращает новый стрим (например, filter, map, sorted). Они ленивые: вычисления начинаются только при вызове терминальной операции.
  • Терминальным (terminal) - завершает обработку и возвращает результат или побочный эффект (например, collect, forEach, reduce). После вызова терминальной операции стрим становится недоступным.

Как это работает на практике:

  1. Создаётся стрим из источника (коллекция через .stream(), массив через Arrays.stream(), или генератор Stream.of()).
  2. Применяется цепочка промежуточных операций, каждая из которых преобразует или фильтрует данные.
  3. Вызывается терминальная операция, которая запускает выполнение всей цепочки.

Пример:

JAVA
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");
List<String> filtered = names.stream()
.filter(name -> name.startsWith("A") || name.startsWith("C"))
.map(String::toUpperCase)
.sorted()
.collect(Collectors.toList());
// Результат: ["ALICE", "CHARLIE"]

Здесь filter и map - промежуточные, collect - терминальная. Стримы также поддерживают параллельную обработку через .parallelStream(), что упрощает многопоточность, но требует осторожности с состоянием и порядком.Ключевые особенности: неизменяемость источника (если не указано иное), однократное использование, отсутствие индексов и возможность работы с бесконечными последовательностями (через Stream.iterate или Stream.generate).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью