Java 8 - 收集器Collectors_分区partitioningBy

文章目录


Java 8 - 收集器Collectors_分区partitioningBy


概述

分区是分组的特殊情况:由一个谓词(返回一个布尔值的函数)作为分类函数,它称分区函数

分区函数返回一个布尔值,这意味着得到的分组 Map 的键类型是 Boolean ,于是它最多可以分为两组—— true 是一组, false 是一组


Demo

举个例子: 把菜单按照素食和非素食分开

     	Map<Boolean, List<Dish>> collect =  menu.stream().collect(partitioningBy(Dish::isVegetarian));

        // 素菜
        System.out.println(collect.get(true));
 

通过 Map 中键为 true 的值,就可以找出所有的素菜了 。

当然了,用同样的分区谓词,对菜单 List 创建的流作筛选,然后把结果收集到另外一个 List中也可以获得相同的结果

 List<Dish> xx = menu.stream().filter(Dish::isVegetarian).collect(toList());
上一篇:Java 8 - 收集器Collectors_实战


下一篇:Java 8 - 收集器Collectors