在Java8中用GROUPBY实现计数

在Java8中用GROUPBY实现计数,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,我正在寻找GROUPBY的一个实现,在lambda表达式中具有并基于计数进行过滤 select COUNT(employee_id), department_id from employee GROUP BY department_id HAVING COUNT(employee_id) > 1 是否有使用lambda表达式实现此目的的简单实现。您可以将groupingBy采集器与counting()和采集器相结合,然后: select COUNT(employee_id), depa

我正在寻找GROUPBY的一个实现,在lambda表达式中具有并基于计数进行过滤

select COUNT(employee_id), department_id  from employee
GROUP BY department_id
HAVING COUNT(employee_id) > 1

是否有使用lambda表达式实现此目的的简单实现。

您可以将
groupingBy
采集器与
counting()
采集器相结合,然后

select COUNT(employee_id), department_id  from employee
GROUP BY department_id
HAVING COUNT(employee_id) > 1
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.counting;
import static java.util.stream.Collectors.groupingBy;

...

Map<Long, Long> map = 
    employees.stream()
             .collect(collectingAndThen(groupingBy(Employee::getDeptId, counting()), 
                                        m -> { m.values().removeIf(v -> v <= 1L); return m; }));
导入静态java.util.stream.Collectors.collectingAndThen;
导入静态java.util.stream.Collectors.counting;
导入静态java.util.stream.Collectors.groupingBy;
...
地图=
employees.stream()
.collect(collectingAndThen(groupingBy(Employee::getDeptId,counting()),
m->{m.values().removeIf(v->v