Java开发中,先根据离职时间利用sql查出在起始年月到结束年月区间的离职人员,并且省份包含上海、广州、深圳。如何利用lambda表示再查询出每个省份每一个月离职总数
时间: 2023-05-26 12:02:28 浏览: 108
假设有一个Employee类,包含离职日期(departureDate)和省份(province)两个属性,则可以使用以下lambda表达式实现查询:
```
List<Employee> employees = ... //从数据库中查询出符合条件的Employee对象列表
//按照省份和月份分组,统计每个月份每个省份的离职总数
Map<String, Map<String, Long>> result = employees.stream()
.filter(employee -> Arrays.asList("上海", "广州", "深圳").contains(employee.getProvince())) //过滤出包含上海、广州、深圳的省份
.collect(Collectors.groupingBy(
employee -> employee.getProvince(), //第一次分组,按照省份分组
Collectors.groupingBy(
employee -> employee.getDepartureDate().format(DateTimeFormatter.ofPattern("yyyy-MM")), //第二次分组,按照年月分组
Collectors.counting() //统计每个月份的数目
)
));
//输出结果
result.forEach((province, monthlyCounts) -> {
System.out.println(province + ":");
monthlyCounts.forEach((month, count) -> {
System.out.println(month + ": " + count);
});
});
```
阅读全文