Pat*_*tan 6 java lambda java-8 java-stream
我正在寻找group by的实现,拥有然后根据lambda表达式中的count进行过滤.
select COUNT(employee_id), department_id from employee
GROUP BY department_id
HAVING COUNT(employee_id) > 1
Run Code Online (Sandbox Code Playgroud)
是否有使用lambda表达式实现此目的的简单实现.
Ale*_* C. 10
您可以将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; }));
Run Code Online (Sandbox Code Playgroud)
请注意,这里不保证返回的映射的可变性groupingBy,因此您可以使用重载版本并提供具体的可变实例(如果需要).
| 归档时间: |
|
| 查看次数: |
1178 次 |
| 最近记录: |