首页 > 解决方案 > 双 forEach 流过集合和哈希图 Java

问题描述

我想编写一个方法,从一个新集合中找到每天工作超过 8 小时的所有项目中的所有员工(对象)并返回set.

为此,我已经有一个project classmap每个员工的 a 作为键,并将他们每天的工作时间作为值。

在我正在编写的类中,我有一个包含所有项目对象的集合项目。

是否可以使用功能接口/流来:

我有类似的东西,但我认为这不会奏效。 projects是所有的集合,并Project objects以为,每天的工作时间为。getCommittedHoursPerDay()mapEmployee objectkeyvalue

标签: java

解决方案


我认为最简单的方法是使用流。下面的代码流式传输所有项目,然后映射到映射中的条目。然后,它过滤所有小时数 > 8 的条目,并收集一组键(自动删除重复项)。

projects.stream()
    .flatMap(p -> p.getCommittedHoursPerDay().entrySet().stream())
    .filter(e -> e.getValue() > 8)
    .map(Map.Entry::getKey)
    .collect(Collectors.toSet());

推荐阅读