Java Stream 按字段分组统计

用 collector 一步完成分组与计数,替代手写循环累加。

Javajava
java
1Map<String, Long> countByDept = employees.stream()2    .collect(Collectors.groupingBy(3        Employee::getDept,4        Collectors.counting()5    ));67countByDept.forEach((dept, count) ->8    System.out.println(dept + " -> " + count));

关键点说明

  • groupingBy 的第一个参数是分类函数,决定了 Map 的键。
  • 第二个参数是下游收集器,这里用 counting 统计每组数量。

使用建议

复制之后先在本地的示例工程里跑一遍,确认运行结果符合预期,再根据自己的业务调整命名与结构。直接粘贴到大项目里容易忽略上下文差异。