Java流是否等同于具有变量赋值的while

时间:2017-06-22 12:54:04

标签: java java-8 java-stream

是否存在与以下

等效的流
xyplot

1 个答案:

答案 0 :(得分:7)

首先,感谢@OlivierGrégoire的评论。它改变了我对新知识的回答。

为未知大小Spliterator编写您自己的nextInts,然后您可以使用StreamSupport#streamnextInts创建一个流。例如:

generateUntil(this::nextInts, List::isEmpty).forEach(list -> {
    //do works
});

import static java.util.stream.StreamSupport.stream;

<T> Stream<T> generateUntil(final Supplier<T> generator, Predicate<T> stop) {
    long unknownSize = Long.MAX_VALUE;

    return stream(new AbstractSpliterator<T>(unknownSize, Spliterator.ORDERED) {
        @Override
        public boolean tryAdvance(Consumer<? super T> action) {
            T value = generator.get();

            if (stop.test(value)) {
                return false;
            }

            action.accept(value);
            return true;
        }
    }, false);
}