如何在Java流中应用groupBy过滤
如何在Java流中应用groupBy过滤
如何使用Java流先进行分组,然后再应用过滤?
示例:考虑这个Employee类:
我想按部门分组,并列出薪水大于2000的员工列表。
这是我可以做到这一点的方法:
List
list.add(new Employee("A", 5000, "A1"));
list.add(new Employee("B", 1000, "B1"));
list.add(new Employee("C", 6000, "C1"));
list.add(new Employee("C", 7000, "C2"));
Map
.filter(e -> e.getSalary() > 2000)
.collect(Collectors.groupingBy(Employee::getDepartment));
输出:
{A=[Employee [department=A, salary=5000, name=A1]],
C=[Employee [department=C, salary=6000, name=C1], Employee [department=C, salary=7000, name=C2]]}
由于部门B中没有薪水大于2000的员工,所以没有B部门的键:
但实际上,我希望有一个空列表的键 -
预期输出:
{A=[Employee [department=A, salary=5000, name=A1]],
B=[],
C=[Employee [department=C, salary=6000, name=C1], Employee [department=C, salary=7000, name=C2]]}
我们如何做到这一点?