Java8中Collectors工具类中得partitioningBy与groupingBy区别

partitioningBy和groupingBy都是用于将数据进行分组的函数。
两者的区别要从函数的签名看起。
partitioningBy函数的定义如下

public static 
    Collector>> partitioningBy(Predicatesuper T> predicate) {
        return partitioningBy(predicate, toList());
    }

可以看出函数的参数一个Predicate接口,那么这个接口的返回值是boolean类型的,也只能是boolean类型,然后他的返回值是Map的key是boolean类型,也就是这个函数的返回值只能将数据分为两组也就是ture和false两组数据。

groupingBy函数的定义,仅查看与partitioningBy参数相同的定义

public static  Collector>>
    groupingBy(Functionsuper T, ? extends K> classifier) {
        return groupingBy(classifier, toList());
    }

groupingBy的函数参数为Function然后他的返回值也是Map,但是他的key是泛型,那么这个分组就会将数据分组成多个key的形式。

你可能感兴趣的:(java)