5
我正在尋找group by的實現,然後根據lambda表達式中的count進行過濾。在java中實現有數組的計數8
select COUNT(employee_id), department_id from employee
GROUP BY department_id
HAVING COUNT(employee_id) > 1
是否有任何使用lambda表達式實現此目的的簡單實現。
我正在尋找group by的實現,然後根據lambda表達式中的count進行過濾。在java中實現有數組的計數8
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
返回地圖的可變性沒有保證,所以你可以使用重載版本,並提供一個具體的如果你想要的話,可變實例。
謝謝你的回答 – Patan