Stream API — как работать с коллекциями декларативно?

Stream API появился в Java 8 и позволяет обрабатывать коллекции в виде последовательности операций, не изменяя исходную коллекцию.

Например, есть список пользователей:

List<User> users = getUsers();

List<String> names = users.stream()
.filter(User::isActive)
.map(User::getName)
.sorted()
.toList();

Здесь происходит несколько операций:
filter() — оставляет только активных пользователей.
map() — преобразует User в String.
sorted() — сортирует результат.
toList() — собирает элементы в список.

Важная особенность Stream API — операции бывают промежуточными и терминальными.

Промежуточные (filter, map, sorted) формируют pipeline и сами по себе обычно не запускают обработку.
Терминальные (toList, collect, count, forEach, reduce) запускают выполнение stream.

Например:

long count = users.stream()
.filter(User::isActive)
.count();

Stream можно сделать параллельным:

users.parallelStream()
.filter(User::isActive)
.toList();

Но parallelStream() не означает автоматически «быстрее». Для небольших коллекций и простых операций накладные расходы могут оказаться больше выигрыша.

Главная идея: Stream API позволяет описывать, что нужно сделать с данными, а не пошагово управлять каждой операцией.
Просмотры: 15
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти