查询是否已使用Stream(不使用它)

时间:2018-04-22 07:43:33

标签: java java-stream stateful spliterator

查询流是否已被使用的最佳方法是什么?是否有类似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();}

0 个答案:

没有答案