Stream API — как работать с коллекциями декларативно?
Stream API появился в Java 8 и позволяет обрабатывать коллекции в виде последовательности операций, не изменяя исходную коллекцию.
Например, есть список пользователей:
Здесь происходит несколько операций:
filter() — оставляет только активных пользователей.
map() — преобразует User в String.
sorted() — сортирует результат.
toList() — собирает элементы в список.
Важная особенность Stream API — операции бывают промежуточными и терминальными.
Промежуточные (filter, map, sorted) формируют pipeline и сами по себе обычно не запускают обработку.
Терминальные (toList, collect, count, forEach, reduce) запускают выполнение stream.
Например:
Stream можно сделать параллельным:
Но parallelStream() не означает автоматически «быстрее». Для небольших коллекций и простых операций накладные расходы могут оказаться больше выигрыша.
Главная идея: 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