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

  • Post author:
  • Post category:java


partitioningBy和groupingBy都是用于将数据进行分组的函数。

两者的区别要从函数的签名看起。

partitioningBy函数的定义如下

public static <T>
    Collector<T, ?, Map<Boolean, List<T>>> partitioningBy(Predicate<? super T> predicate) {
        return partitioningBy(predicate, toList());
    }

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

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

public static <T, K> Collector<T, ?, Map<K, List<T>>>
    groupingBy(Function<? super T, ? extends K> classifier) {
        return groupingBy(classifier, toList());
    }

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



版权声明:本文为qq_28336067原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。