3 回答

TA貢獻2080條經驗 獲得超4個贊
您可以先轉換HashSet<B>為HashSet<String>然后使用您的代碼:
Set<String> bDeps = workCenters.stream()
.map(B::getDepartment)
.collect(Collectors.toSet());
List<A> collect = skills.stream()
.filter(s -> bDeps.contains(s.getDepartment()))
.collect(Collectors.toList());

TA貢獻1864條經驗 獲得超2個贊
collect
比方說,所有部門都workCenters
進入了。Set<String>
departmentSet
List<A> collect = skills.stream() .filter(s -> departmentSet.contains(s.getDepartment()) .collect(Collectors.toList());

TA貢獻1794條經驗 獲得超8個贊
首先流式傳輸workCenters并獲取其中的一組部門,然后流式傳輸技能并過濾掉該集合中不存在的任何技能。
final Set<String> workCenterDepartments = workCenters.stream()
.map(B::getDepartment)
.collect(Collectors.toSet());
final List<A> skillsWithWorkCenterDept = skills.stream()
.filter(skill -> workCenterDepartments.contains(skill.getDepartment()))
.collect(Collectors.toList());
如果您不再需要舊列表,您可能會決定從前一個列表中刪除元素,而不是創建一個新列表:
skills.removeIf(skill -> !workCenterDepartments.contains(skill.getDepartment()));
添加回答
舉報