收集时流非法异常

时间:2018-07-13 02:38:08

标签: java-8 java-stream illegalstateexception

我正在尝试执行流的嵌套循环。当我在列表中收集结果时,会抛出“非法状态异常”,表明蒸汽已关闭

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:流已被操作或关闭

我知道我们不应该使用流一次以上,但是在这种情况下,我只是过滤然后收集..直到过滤它不会显示错误,但是在收集它时会抛出此异常。

1 个答案:

答案 0 :(得分:0)

  • order流仅使用一次

  • trade不是蒸汽

您写的是,对于order流的每个元素,您都需要根据trade的内容检查一个条件,但是只能对其进行一次迭代,这就是问题所在。 / p>

您可以传递Collection流中的trade