Ответ
Stream API — это абстракция, представленная в Java 8, для декларативной обработки последовательностей данных (коллекций, массивов, I/O каналов) в функциональном стиле. Основная цель — упростить и сделать более читаемыми операции фильтрации, преобразования, агрегации данных.
Ключевые особенности:
- Не хранит данные. Stream — это не структура данных, а конвейер для вычислений над источником.
- Ленивые вычисления. Промежуточные операции (например,
filter,map) выполняются только при вызове терминальной операции (например,collect). - Возможность параллельной обработки. Легко переключиться на параллельное выполнение с помощью метода
parallelStream().
Пример использования в тестах (например, для фильтрации списка объектов):
List<User> users = Arrays.asList(
new User("Alice", "admin"),
new User("Bob", "user"),
new User("Charlie", "admin")
);
// Получить список имен всех администраторов
List<String> adminNames = users.stream()
.filter(user -> "admin".equals(user.getRole())) // Промежуточная операция: фильтрация
.map(User::getName) // Промежуточная операция: преобразование
.collect(Collectors.toList()); // Терминальная операция: сбор результата
System.out.println(adminNames); // [Alice, Charlie]
Основные виды операций:
- Промежуточные (Intermediate):
filter,map,sorted,distinct,limit. Возвращают новый Stream. - Терминальные (Terminal):
forEach,collect,reduce,count,anyMatch. Запускают выполнение конвейера и возвращают результат или side-effect.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶