[英]double forEach stream over set and hashmap Java
我想編寫一個方法,從一個新集合中找到每天工作超過 8 小時的所有項目中的所有員工(對象)並返回該set
。
為此,我已經有一個project class
,其中包含每個員工的map
作為鍵和他們每天工作的時間作為值。
在 class 中,我正在編寫方法,我有一個包含所有項目對象的集合項目。
是否可以使用功能接口/stream 來:
迭代項目集
然后為每個項目迭代和過濾(超過 8 個)map 中的所有值以及項目中的員工
返還所有每天工作超過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
。
我認為最簡單的方法是使用流。 下面的代碼流式傳輸所有項目,然后映射到 map 中的條目。 然后,它過濾所有小時數 > 8 的條目,並收集一組鍵(這會自動刪除重復項)。
projects.stream()
.flatMap(p -> p.getCommittedHoursPerDay().entrySet().stream())
.filter(e -> e.getValue() > 8)
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.