加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 根据set中的值过滤列表中的值

发布时间:2020-12-15 05:18:37 所属栏目:Java 来源:网络整理
导读:我正在尝试使用 java 8来解决以下问题.说我有以下(A和B是自定义类) ArrayListA skills;HashSetB workCenters; 我需要做的是找到值是否也包含在B中的字符串a.getDepartment(),它还包含方法String getDepartment(),然后将它们收集到新的List A中. 我试过这样的
我正在尝试使用 java 8来解决以下问题.说我有以下(A和B是自定义类)

ArrayList<A> skills;
HashSet<B> workCenters;

我需要做的是找到值是否也包含在B中的字符串a.getDepartment(),它还包含方法String getDepartment(),然后将它们收集到新的List< A>中.

我试过这样的:

List<A> collect = skills.stream()
     .filter(s -> workCenters.contains(s.getDepartment())
     .collect(Collectors.toList());

但在这种情况下我没有做对,因为我无法从workCenters中检索getDepartment().什么是正确的解决方案?

解决方法

您可以从转换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());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读