涉及 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 包含唯一值,并且您可以使用 equals 而不是 == 来表示 Obj2,您可以这样写:

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

尽管将 list2 元素放到 Set 中会更高效。