Я сталкиваюсь с этой ошибкой и не знаю, как ее отладить. Суть вопроса в том, что я должен получить минимум и максимум потока. Я не могу использовать Коллекции, и поток должен быть распараллеливаемым. Кроме того, поток является аргументом, поэтому его нельзя дублировать. Я не прошу решения, но только то, что означает ошибка.
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;
}
}
Исключение в потоке "main" java.lang.IllegalStateException: поток уже был обработан или закрыт
в java.base / java.util.stream.AbstractPipeline. (AbstractPipeline.java:203)
в java.base / java.util.stream.ReferencePipeline. (ReferencePipeline.java:94)
в java.base / java.util.stream.ReferencePipeline $ StatelessOp. (ReferencePipeline.java:696)
в java.base / java.util.stream.ReferencePipeline $ 3. (ReferencePipeline.java:189)
в java.base / java.util.stream.ReferencePipeline.map (ReferencePipeline.java:188)
в MinMax.findMinMax (MinMax.java:11)
в Main.main (MinMax.java:46)