> Что такое стримы в Java и как они работают (Java)
Уровень: junior · Роль: backend · Категория: Технические вопросы
Компании: Mosline
Стек: Java
> Пример ответа
Стримы (Stream API) - это функциональный способ обработки последовательностей данных, введённый в Java 8. Они позволяют выполнять операции над коллекциями, массивами или другими источниками данных в декларативном стиле, похожем на SQL-запросы или цепочки функций в функциональных языках.Стрим не хранит данные, а представляет собой конвейер операций, который может быть:
- Промежуточным (intermediate) - возвращает новый стрим (например,
filter,map,sorted). Они ленивые: вычисления начинаются только при вызове терминальной операции. - Терминальным (terminal) - завершает обработку и возвращает результат или побочный эффект (например,
collect,forEach,reduce). После вызова терминальной операции стрим становится недоступным.
Как это работает на практике:
- Создаётся стрим из источника (коллекция через
.stream(), массив черезArrays.stream(), или генераторStream.of()). - Применяется цепочка промежуточных операций, каждая из которых преобразует или фильтрует данные.
- Вызывается терминальная операция, которая запускает выполнение всей цепочки.
Пример:
JAVAList<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).
> Похожие задачи по backend
Опыт работы с Kafka и другими очередями сообщений
Какой опыт работы с Redis, его структурами данных, pub/sub и стримами
Как работают скрипты в Redis и обеспечивают ли они атомарность операций
Был ли опыт работы с MongoDB или аналогичными документно-ориентированными базами данных
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью