我正在尝试执行流的嵌套循环。当我在列表中收集结果时,会抛出“非法状态异常”,表明蒸汽已关闭
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:流已被操作或关闭
我知道我们不应该使用流一次以上,但是在这种情况下,我只是过滤然后收集..直到过滤它不会显示错误,但是在收集它时会抛出此异常。
答案 0 :(得分:0)
order
流仅使用一次
trade
不是蒸汽
您写的是,对于order
流的每个元素,您都需要根据trade
的内容检查一个条件,但是只能对其进行一次迭代,这就是问题所在。 / p>
您可以传递Collection
流中的trade
。