首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流IllegalStateException

流IllegalStateException
EN

Stack Overflow用户
提问于 2019-04-15 08:52:59
回答 2查看 353关注 0票数 1

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

代码语言:javascript
复制
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.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) at MinMax.findMinMax(MinMax.java:11) at Main.main(MinMax.java:46)

EN

回答 2

Stack Overflow用户

发布于 2019-04-15 08:57:05

使用intstream.count()关闭流(因为它需要处理整个流以计数元素的数量)。但是,您的检查是完全没有必要的,因为它已经返回一个可选项,如果流是空的,该选项将是空的。

票数 3
EN

Stack Overflow用户

发布于 2019-04-15 09:19:38

在Java 8中,每个流都是一个单一使用的数据序列,支持管道中的多个I/O操作。

管道操作结束后,流实例将被消耗和关闭。

如果您在代码的另一部分尝试再次使用相同的流,您将得到java.lang.IllegalStateException: stream has already been operated upon or closed

在您的代码中,您要使用它两次:- instream.count()instream.map()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55685596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档