5
私はgroup byの実装を探していますが、それをラムダ式のcountに基づいてフィルタリングしています。java 8でgroup byをcountで実装する
select COUNT(employee_id), department_id from employee
GROUP BY department_id
HAVING COUNT(employee_id) > 1
ラムダ式を使用してこれを達成する簡単な実装はありますか。あなたがオーバーロードされたバージョンを使用してコンクリートを供給することができますので、ここでは、groupingBy
によって返されるマップの可変性に保証するものではありません
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; }));
注:
ありがとうございます – Patan