Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
16 Авг 2024
2 мин
1696

Как работают стримы в Java

Стримы в 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&lt;Integer&gt; numbers = Arrays.asList(1, 2, 3, 4, 5);
List&lt;Integer&gt; evenSquares = numbers.stream()
    .filter(n -&gt; n % 2 == 0)
    .map(n -&gt; n * n)
    .collect(Collectors.toList());

Пример подсчета количества строк в списке, содержащих заданную подстроку:

List&lt;String&gt; strings = Arrays.asList("hello", "world", "java", "stream");
long count = strings.stream()
    .filter(s -&gt; s.contains("a"))
    .count();

Заключение

Стримы в Java являются мощным инструментом для обработки данных, особенно в сочетании с функциональными интерфейсами и лямбда-выражениями. Они позволяют кратко и наглядно описывать сложные операции над данными, а также оптимизировать производительность при параллельной обработке. Надеемся, что данная статья помогла вам разобраться с основами работы со стримами в Java. 😃

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий