Collectors.partitioningBy()
Делит элементы потока на две группы по условию.
Доступно с: Java 8
Синтаксис
static <T> Collector<T, ?, Map<Boolean, List<T>>> partitioningBy(Predicate<? super T> predicate)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| predicate | Predicate<? 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.