我正在寻找一个组的实现,然后在lambda表达式的计数为基础的过滤器。
select COUNT(employee_id), department_id from employee GROUP BY department_id HAVING COUNT(employee_id) > 1
使用lambda表达式是否有任何简单的实现。
z9zf31ra1#
你可以把 groupingBy 收集器,带 counting() 以及 collectingAndThen :
groupingBy
counting()
collectingAndThen
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; }));
注意,这里不能保证 groupingBy ,因此可以使用重载版本,并根据需要提供具体的可变示例。
1条答案
按热度按时间z9zf31ra1#
你可以把
groupingBy
收集器,带counting()
以及collectingAndThen
:注意,这里不能保证
groupingBy
,因此可以使用重载版本,并根据需要提供具体的可变示例。