我试图迭代两个列表,但收到一个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/