[英]Implementation of having count with group by in java 8
我正在尋找group by的實現,擁有然后根據lambda表達式中的count進行過濾。
select COUNT(employee_id), department_id from employee
GROUP BY department_id
HAVING COUNT(employee_id) > 1
是否有使用lambda表達式實現此目的的簡單實現。
您可以將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
返回的映射的可變性,因此您可以使用重載版本並提供具體的可變實例(如果需要)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.