lamda collectingAndThen的使用

1: 方法

collectingAndThen(Collector var0, Function var1)

2:作用

先 Collector ,再 Function
注意:Function是对 Collector操作后的整体stream做操作

3:举例

对list分组,并统计数量
    @Test
    public void test16() {
        List dish1List = DishList.getDish1List();
        Integer collect = dish1List.stream().collect(Collectors.collectingAndThen(Collectors.groupingBy(Dish::getType), typeListMap -> typeListMap.size()));
        System.out.println(collect);
    }

注意:groupingBy后是一个Map,再次统计数量,统计的是Map中的元素个数,而不是 Map 中某个value对应的list的数量

4:对比不使用collectingAndThen

    /**
     * 根据type分组-然后统计数量
     */
    @Test
    public void groupingBy2() {
        List dish1List = DishList.getDish1List();
        Map collect = dish1List.stream().collect(Collectors.groupingBy(Dish::getType, Collectors.counting()));
    }

Collectors.counting() 统计的是Map中的每个Value的数量

你可能感兴趣的:(java8,java)