java - 双 forEach 流过集合和哈希图 Java
问题描述
我想编写一个方法,从一个新集合中找到每天工作超过 8 小时的所有项目中的所有员工(对象)并返回set
.
为此,我已经有一个project class
将map
每个员工的 a 作为键,并将他们每天的工作时间作为值。
在我正在编写的类中,我有一个包含所有项目对象的集合项目。
是否可以使用功能接口/流来:
迭代项目集
然后为每个项目迭代和过滤(超过 8 个)地图中的所有值以及项目中的员工
返还所有每天工作超过8小时的员工。
public Set<Employee> getFulltimeEmployees() { Set<Employee> emp = projects .forEach(p -> p.getCommittedHoursPerDay().forEach()); return Set.of(); }
我有类似的东西,但我认为这不会奏效。
projects
是所有的集合,并Project objects
以为,每天的工作时间为。getCommittedHoursPerDay()
map
Employee object
key
value
解决方案
我认为最简单的方法是使用流。下面的代码流式传输所有项目,然后映射到映射中的条目。然后,它过滤所有小时数 > 8 的条目,并收集一组键(自动删除重复项)。
projects.stream()
.flatMap(p -> p.getCommittedHoursPerDay().entrySet().stream())
.filter(e -> e.getValue() > 8)
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
推荐阅读
- python - 如何为类似于 django 模型/字段的动态字段指定类型?
- cesium - 如何在 CZML 中设置“等待时间”?
- tsql - Tsql IF 语句未正确评估
- winforms - 在 Winforms 项目的 WindowState 最大化模式下将 50% 扩展到 50%
- javascript - 用三个js显示一个对象
- php - 构建快速重定向服务器
- c++ - 某些进程的注册表限制
- reactjs - 使用代理重写 Caddy
- google-cloud-platform - StatusCode:403,ReasonPhrase:'Forbidden' 在 .net 中的 google ml 中进行预测请求时
- amazon-web-services - scp 到 EC2 权限被拒绝(公钥)但 ssh 有效