Java 供应商对流程的再利用

Java 供应商对流程的再利用,java,java-stream,supplier,Java,Java Stream,Supplier,我需要多次使用一个流。 我试过这样的方法: public static void main(String[] args) { Stream<Integer> stream = Arrays.stream(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8}); Supplier<Stream<Integer>> saved = saveStream(stream.filter(e -> e % 2 == 0));

我需要多次使用一个流。 我试过这样的方法:

public static void main(String[] args) {

    Stream<Integer> stream = Arrays.stream(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8});
    Supplier<Stream<Integer>> saved = saveStream(stream.filter(e -> e % 2 == 0));

    System.out.println(saved.get().count());
    System.out.println(saved.get().max(Integer::compareTo).get());
    System.out.println(saved.get().min(Integer::compareTo).get());
}

public static Supplier<Stream<Integer>> saveStream(Stream<Integer> stream){
    Supplier<Stream<Integer>> result = new Supplier<Stream<Integer>>() {

        @Override
        public Stream<Integer> get() {
            Stream<Integer> st = stream;
            return st;
        }
    };

    return result;
}
publicstaticvoidmain(字符串[]args){
Stream=Arrays.Stream(新的整数[]{1,2,3,4,5,6,7,8});
供应商保存=保存流(stream.filter(e->e%2==0));
System.out.println(saved.get().count());
System.out.println(saved.get().max(Integer::compareTo.get());
System.out.println(saved.get().min(Integer::compareTo.get());
}
公共静态供应商存储流(流){
供应商结果=新供应商(){
@凌驾
公共流get(){
Stream st=Stream;
返回st;
}
};
返回结果;
}
但它不起作用


有什么建议吗?

您的供应商不会创建流的新实例,但会多次提供相同的实例


由于流是一次性使用的,因此这种方法不起作用。您必须重新创建流。

流是一次性使用的。请尝试阅读,特别是有关终端操作的部分。看起来像的实例。您使用的是供应商,但不知道原因。