簡體   English   中英

在java 8中使用group進行計數的實現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM