Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Collectors.partitioningBy()

Делит элементы потока на две группы по условию.

Доступно с: Java 8

Синтаксис

static <T> Collector<T, ?, Map<Boolean, List<T>>> partitioningBy(Predicate<? super T> predicate)

Параметры

ПараметрТипОписание
predicatePredicate<? super T>Условие разбиения.

Возвращаемое значение

Collector<T, ?, Map<Boolean, List<T>>>Сборщик в словарь с ключами `false` и `true`.

Примеры

Сдали и не сдали:

void main() {
    Map<Boolean, List<Integer>> parts = Stream.of(45, 82, 67, 30, 91)
        .collect(Collectors.partitioningBy(score -> score >= 60));
    IO.println("passed: " + parts.get(true));
    IO.println("failed: " + parts.get(false));
}

Результат:

passed: [82, 67, 91]
failed: [45, 30]

Примечания

В результате всегда есть оба ключа, даже если одна группа пустая. Вторым аргументом можно передать сборщик, например Collectors.counting(). Для большего числа групп используйте groupingBy().

См. также

  • Collectors.groupingBy() — Сборщик, который раскладывает элементы по группам с общим ключом.
  • Stream.filter() — Оставляет в потоке только элементы, подходящие под условие.

Вопросы и ответы по теме

В учебнике

  • Группировка — Группировка элементов потока в Java — Collectors.groupingBy, подсчёт и суммы по группам, mapping, TreeMap и partitioningBy.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.