@narciso
Управление потоками данных в Java с помощью Stream API включает в себя последовательное выполнение операций над элементами коллекции. Stream API предоставляет мощный и удобный способ для работы с коллекциями и массивами, обеспечивая функциональный стиль программирования. Вот ключевые шаги для работы с потоками:
- Создание потока:
Вы можете создать поток из коллекций, массивов или даже самостоятельно. Основные методы для создания потока: stream() для работы с коллекциями и Arrays.stream() для массивов.
List
- Промежуточные операции:
Эти операции трансформируют поток и возвращают новый поток. Они выполняются лениво и не инициируют обработку данных. Примеры промежуточных операций:
filter(Predicate predicate): Фильтрация элементов на основе условия.
map(Function mapper): Преобразование каждого элемента.
sorted() / sorted(Comparator comparator): Сортировка элементов.
distinct(): Удаление дубликатов.
Stream
- Терминальные операции:
Эти операции завершают поток и инициируют обработку данных. Они могут возвращать результат или выполнять какое-то действие. Примеры:
forEach(Consumer action): Применяет действие к каждому элементу.
collect(Collector collector): Преобразует поток в коллекцию или другой объект.
reduce(...): Сворачивает элементы потока в один объект.
count(): Возвращает количество элементов в потоке.
List
- Особенности работы с потоками:
Однократность использования: Поток можно использовать лишь один раз. После вызова терминальной операции поток закрывается.
Параллельность: Используйте parallelStream() для параллельной обработки данных для повышения производительности на больших объемах данных.
Пример комплексного использования:
1
2
3
4
5
6
7
8
9
|
List<String> names = Arrays.asList("John", "Jane", "Jack", "Doe");
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith("J"))
.map(String::toUpperCase)
.sorted()
.collect(Collectors.toList());
filteredNames.forEach(System.out::println);
|
В этом примере создается поток, фильтруются имена, которые начинаются с "J", конвертируются в верхний регистр, сортируются и собираются в список, который затем выводится. Stream API позволяет писать лаконичный и читаемый код для работы с данными.