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

嵌套循环涉及java 8中的条件

发布时间:2020-12-15 04:28:48 所属栏目:Java 来源:网络整理
导读:我有一段代码 ListObj1 result = new ArrayListObj1();for (Obj1 one : list1) { for (Obj2 two : list2) { if (one.getStatus() == two) { result.add(one); } } } 在Java 8中使用流我可以像这样写 list1.stream().forEach(one - { if (list2.stream().anyM
我有一段代码

List<Obj1> result = new ArrayList<Obj1>();
for (Obj1 one : list1) {
            for (Obj2 two : list2) {
                if (one.getStatus() == two) {
                    result.add(one);
                }
            }
        }

在Java 8中使用流我可以像这样写

list1.stream().forEach(one -> {
        if (list2.stream().anyMatch(two -> one.getStatus() == two)) {
            result.add(one);
        }            
    });

这可以大大简化.

解决方法

假设list2包含唯一值,并且您可以对Obj2使用equals而不是==,您可以这样写:

List<Obj1> result = list1.stream()
                         .filter(one -> list2.contains(one.getStatus()))
                         .collect(Collectors.toList());

虽然将list2元素放入Set会更高效.

(编辑:李大同)

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

    推荐文章
      热点阅读