double forEach stream over set and hashmap Java



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

为此,我已经有了一个project class,它将每个员工的map作为关键字,并将他们每天工作的小时数作为值。

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

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

  • 迭代项目集

  • 然后,对于每个项目,使用项目中的员工对映射中的所有值进行迭代和筛选(超过8个(

  • 返回每天工作时间超过8小时的所有员工。

    public Set<Employee> getFulltimeEmployees() {
    Set<Employee> emp = projects
    .forEach(p -> p.getCommittedHoursPerDay().forEach());
    return Set.of();
    }
    

我有这样的东西,但我认为这行不通。projects是所有Project objects的集合,getCommittedHoursPerDay()返回mapEmployee object作为key,每天工作小时数作为value

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

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

最新更新