java - 有没有办法在 Java 8 中使用 Streams 合并两个 for 循环?

标签 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 流来组合它。

最佳答案

类似于带有嵌套流的 anyMatch :

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

关于java - 有没有办法在 Java 8 中使用 Streams 合并两个 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55364609/

相关文章:

java - 为什么 StreamEx 在收集到列表时强制我将 "? extends"添加到变量类型?

java - 使用 Java 8 Stream API 时如何移至循环中的下一个值

java - 如何处理不导致错误的emptycollectionsException?

java - 我很难跳到循环的正确部分

java - java.util.Collections.reverse() 如何工作?

javascript - 为什么 Java 8 Nashorn (JavaScript) 模返回 0.0( double )而不是 0(整数)?

java - 链表删除最后一次发生

Java 8、Base64.Decoder编译

java - Spring Hibernate MySQL 单向 ManyToOne

Java8 : Map list of objects by key