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()));
添加回答
举报