-1

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

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;
}

但它不起作用...

有什么建议吗?

4

1 回答 1

1

您的供应商不会创建流​​的新实例,而是多次提供相同的实例。

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

于 2019-12-20T11:13:56.950 回答