stream聚合groupingBy的使用

阅读更多

 

 

static >

    Collector groupingBy(Function classifier,

                                  Supplier mapFactory,

                                  Collector downstream) 

    

    参数介绍

        M 是返回结果的类型,是Map的子类。分组的结果是Map

        T 是流中元素的类型

        K 是结果Map的key的类型

        A 是结果value的类型

        D 是结果Map的value的容器结果类型

        

        classifier是将流中元素转为结果Map的key   方法体或函数对象-----------------key

        mapFactory是结果的map------------------返回类型

        downstream是整理map的value,因为有可能是多级分组,所以也是Collector-----------value

 

 

 

 

//统计集合重复元素出现次数,并且去重返回hashmap

Map map = list.stream().

    collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));

System.out.println(map);

 

 

 //groupingBy

        Map> tempMap = Stream.of(new Person("1", "aa", "12"), new Person("1", "bb", "13"), new Person("3", "cc", "14"))

                .collect(Collectors.groupingBy(x -> x.id));

        for (String s : tempMap.keySet()) {

            tempMap.get(s).stream().forEach(x -> System.out.println(x));

        }

 

//多个条件重复

 

Map>> amp  = docLotDetailLists.parallelStream().

collect(Collectors.groupingBy(DocLotDetail::getGroupOrder,Collectors.groupingBy(DocLotDetail::getBaseValueName)));

 

 

 参考:

https://www.jianshu.com/p/a6464a5d37e0

https://www.cnblogs.com/tanhao/p/9363561.html

https://blog.csdn.net/wild46cat/article/details/73477056

 

 

你可能感兴趣的:(其他)