java - 流 - 过滤器中的任何匹配都会产生 IllegalStateException

标签 java java-stream

我试图迭代两个列表,但收到一个IllegalStateException:流已被操作或关闭

file().forEach(line -> {
    boolean match = ordersSupplier.get().anyMatch(order -> order == line.id);
    if (match) {
        //do something;
    }
});

我知道anyMatch是一个终端操作,这就是我收到此错误的原因。我可以使用生产线 ID 来参数化任何匹配的供应商吗?有什么想法吗?

最佳答案

Set中收集订单 ID,并使用 Stream APIfilter 您的订单行。然后您可以在 forEach 中执行代码。

Set<String> orderIds = ordersSupplier.get().collect(toSet());

file().stream()
      .filter(l -> orderIds.contains(l.id))
      .forEach(
           line -> {
                    //do something;
       });

关于java - 流 - 过滤器中的任何匹配都会产生 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59690371/

相关文章:

java - 创建一个 Map<String,List<Integer>>

java - 这里不需要方法引用表达式,编译时错误

java - 如何清理我的 Java Stream?

java - 是否可以使用 Streams.intRange 函数?

java - 如何轻松地将 XML 命名空间转换为 Java 包名称?

Java ^ 正则表达式不匹配字符串中的新行

java - Android Studio 中播放的本地视频存放在哪里

java - 对字符串执行替换但忽略某些模式

java - Google 表格 API 错误

java - 如何在 java 中查找二维 ArrayList 的列的唯一值?