繁体   English   中英

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

[英]nested loops involving conditions in java 8

我有一段代码

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会更list2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM