查询流是否已被使用的最佳方法是什么?是否有类似Stream::isConsumed
曾经考虑过的东西?
我承认这类似于以下问题:
How to check if a Java 8 Stream is empty?
尽管如此,差异似乎是检查流消耗似乎不需要部分消耗所述流。以上链接的答案是否也适用于此处?
我的用例类似于以下内容:
/**
... This operation ensures, regardless whether the prefix or suffix stream is
parallel, that the suffix stream is computed only after the prefix stream has
been exhausted...
*/
public static <E> Stream<E> andThen(
Stream<? extends E> stream,
Supplier<? extends Stream<? extends E>> after);
编辑(4/23/18) 显示实施细节并不重要。
在andThen
中,stream
必须在追加after
生成的其余元素之前耗尽。
当然,有些人可能更喜欢写Spliterator
,但即便如此,如果写trySplit
,你可能想知道从前缀spliterator拆分的孩子是否已经耗尽了他们的元素(如果不是则阻塞...... ?)分割后缀之前;您可能不希望过早地使用任何前缀元素来执行此操作。
略有关联;可能正交;一个偷看的分裂器会不会有用?
abstract boolean tryPeek(Consumer<? super E> action);
abstract boolean skip();
default boolean tryAdvance(Consumer<? super E> action) {return tryPeek(action) && skip();}