gpt4 book ai didi

java - 流 IllegalStateException

转载 作者:行者123 更新时间:2023-11-29 08:23:14 25 4
gpt4 key购买 nike

我遇到了这个错误,不知道如何调试它。问题的总结是我必须获得流的最小值和最大值。我不能使用 Collections 并且流必须是可并行的。此外,流是一个参数,因此它不能被复制。我不是在寻求解决方案,而是错误意味着什么。

class MinMax {
final int min, max;

static Optional<MinMax> findMinMax(Stream<Integer> instream) {
if(instream.count() > 0) {
Optional<MinMax> ans = instream.map(x -> {return new MinMax(x,x);}).reduce((x, y) -> {
Integer max = x.max;
Integer min = x.min;
if (y.min < min){
min = y.min;
}
if (y.max > max) {
max = y.max;
}
return new MinMax(min, max);
});
return ans;
} else {
return Optional.empty();
}
}

public MinMax(int min, int max) {
this.min = min;
this.max = max;
}
@Override
public String toString() {
return min + ", " + max;
}
}

Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed at java.base/java.util.stream.AbstractPipeline.(AbstractPipeline.java:203) at java.base/java.util.stream.ReferencePipeline.(ReferencePipeline.java:94) at java.base/java.util.stream.ReferencePipeline$StatelessOp.(ReferencePipeline.java:696) at java.base/java.util.stream.ReferencePipeline$3.(ReferencePipeline.java:189) at java.base/java.util.stream.ReferencePipeline.map(ReferencePipeline.java:188) at MinMax.findMinMax(MinMax.java:11) at Main.main(MinMax.java:46)

最佳答案

使用 intstream.count() 关闭流(因为它需要处理整个流才能计算元素的数量)。然而,你的检查是完全没有必要的,因为它已经返回一个可选的,如果流是空的。

关于java - 流 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55685596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com