Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Фильтрация Java: Стримы

Операция filter() (фильтрация) позволяет отсеивать элементы из потока данных на основе заданных критериев. Фильтрация пожалуй самая популярная операция в программировании. Разберем ее на примере отбора четных чисел. Как бы мы выполнили эту операцию без стримов:

var numbers = List.of(1, 2, 3, 4, 5, 6);

// Список для хранения четных чисел
var evenNumbers = new ArrayList<>();

// Цикл для отбора четных чисел
for (var number : numbers) {
    if (number % 2 == 0) {
        evenNumbers.add(number);
    }
}

System.out.println(evenNumbers); // Вывод: [2, 4, 6]

В отличие от операции отображения, фильтрация не выполняет преобразования элемента, она лишь вычисляет необходимость добавить это значение в результирующую коллекцию. Лямбда-функция в этом случае называется предикатом, так как ее задача вернуть булево значение. Если значение нужно добавить в новую коллекцию, тогда возвращается true, иначе false. Стримы позволяют выразить эту операцию в одну строчку:

var numbers = List.of(1, 2, 3, 4, 5, 6);

// Фильтрация для выбора только четных чисел
var evenNumbers = numbers.stream()
                         .filter(number -> number % 2 == 0)
                         .toList();

System.out.println(evenNumbers); // Вывод: [2, 4, 6]

Фильтрация всегда возвращает неизмененные элементы, но их количество может быть любым, включая все элементы исходной коллекции если они все удовлетворяют предикату и не включая никакие элементы в обратной ситуации. Тогда возвращается пустая коллекция.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 9 мая

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»