【发布时间】:2018-07-13 02:38:08
【问题描述】:
我正在尝试执行流的嵌套循环。当我在列表中收集结果时,它会抛出“非法状态异常”,说明 Steam 已关闭
public void execute(Stream<Trade> trade, Stream<Order> order){
order.filter(o -> trade.anyMatch(t -> t.getInstrumentId() ==
o.getInstrumentId() && t.getGroupid() == o.getGroupId()))
.collect(Collectors.toList());// Illegal exception only when i include this line
}
异常是:java.lang.IllegalStateException:流已经被操作或关闭
我知道我们不应该多次使用流,但在这种情况下,我只是过滤然后收集.. 直到过滤它不会显示错误,但在收集时会引发此异常。
【问题讨论】:
-
为订单流的每个元素调用传递给 filter() 的回调谓词。因此,您正在为订单的每个元素调用 trade.anyMatch()。那不止一次。你知道你不能那样做。
标签: java-8 java-stream illegalstateexception