This question already has answers here:
Java 8 Stream IllegalStateException: Stream has already been operated on or closed
(6个答案)
3年前关闭。
我需要计算大列表的两个部分的比率,其中第一部分包含第二个部分:
但是此代码引发异常:java.lang.IllegalStateException:流已被操作或关闭
是否可以在不创建相同part1流的情况下编写代码?
流是一些在运行时进行了优化的代码的构建器。它的执行不像看起来那样动态。
(6个答案)
3年前关闭。
我需要计算大列表的两个部分的比率,其中第一部分包含第二个部分:
Stream<Element> part1 = list.stream().filter(x -> x.getN1() < x.getN2);
int result = part1.filter(y -> y.isRight()).count() / part1.count();
但是此代码引发异常:java.lang.IllegalStateException:流已被操作或关闭
是否可以在不创建相同part1流的情况下编写代码?
最佳答案
您只能重复使用具有结果记忆的集合。
List<Element> part1 = list.stream().filter(x -> x.getN1() < x.getN2).collect(toList());
double result = (double) part1.stream().filter(y -> y.isRight()).count() / part1.size();
流是一些在运行时进行了优化的代码的构建器。它的执行不像看起来那样动态。
09-05 19:25