有没有一种方法可以在Java 8中使用Streams合并两个for循环?

时间:2019-03-26 19:07:27

标签: java java-8 java-stream

我有两个列表,其中一个列表为String类型,另一个列表为某些实体对象。如何遍历这两个列表或如何使用Java 8进行比较

List<Admin> admin= new ArrayList<>();

for (Admin ah : subProducers) {
    for (String value : values) {
        if (ah.getFirstName().contains(value) || ah.getLastName().contains(value)) {
            admin.add(ah);
        }
    }
}

我目前正在使用for循环来验证该条件,但找不到使用Java 8流将其组合的更好的方法。

1 个答案:

答案 0 :(得分:7)

类似于anyMatch的嵌套流:

subProducers.stream()
            .filter(a -> values.stream()
                               .anyMatch(b -> a.getFirstName().contains(b)
                                           || a.getLastName().contains(b)))
            .collect(Collectors.toList())