Стримы в Java являются мощным инструментом обработки данных и являются частью Java 8. Они предоставляют эффективный и краткий способ обработки данных с использованием функциональных интерфейсов и лямбда-выражений. В этой статье мы рассмотрим основы работы со стримами и их применение. 😊
Что такое стримы
Стрим – это последовательность элементов, которые поддерживают различные операции обработки данных. Эти операции могут быть выполнены параллельно или последовательно. Важно отметить, что стримы не хранят элементы, а лишь предоставляют возможность обработки данных.
Создание стрима
Стримы можно создать из различных источников, таких как коллекции, массивы или I/O каналы. Ниже приведен пример создания стрима из списка чисел:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> numberStream = numbers.stream();
Операции над стримами
Операции над стримами можно разделить на две категории: промежуточные и терминальные.
Промежуточные операции
Промежуточные операции возвращают новый стрим, который получается в результате преобразования исходного. Они не выполняются сразу, а только когда вызывается терминальная операция. Примеры промежуточных операций:
filter(Predicate<T> predicate)
— фильтрует элементы по условию.map(Function<T, R> mapper)
— преобразует элементы с помощью заданной функции.
Терминальные операции
Терминальные операции завершают обработку стрима и возвращают результат или побочный эффект. Примеры терминальных операций:
forEach(Consumer<T> action)
— выполняет заданное действие для каждого элемента.collect(Collector<T, A, R> collector)
— собирает элементы в заданный контейнер.
Примеры использования стримов
Пример фильтрации и преобразования списка чисел:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); List<Integer> evenSquares = numbers.stream() .filter(n -> n % 2 == 0) .map(n -> n * n) .collect(Collectors.toList());
Пример подсчета количества строк в списке, содержащих заданную подстроку:
List<String> strings = Arrays.asList("hello", "world", "java", "stream"); long count = strings.stream() .filter(s -> s.contains("a")) .count();
Заключение
Стримы в Java являются мощным инструментом для обработки данных, особенно в сочетании с функциональными интерфейсами и лямбда-выражениями. Они позволяют кратко и наглядно описывать сложные операции над данными, а также оптимизировать производительность при параллельной обработке. Надеемся, что данная статья помогла вам разобраться с основами работы со стримами в Java. 😃
Добавить комментарий