public abstract static class Spliterators.AbstractSpliterator<T> extends Object implements Spliterator<T>
Spliterator
实现trySplit
以允许有限的并行性。
扩展类只需要实现tryAdvance
。 扩展类应该覆盖forEach
,如果它可以提供更高性能的实现。
使用这个类的一个替代方法也允许有限的并行性是从迭代器创建一个分隔符(参见Spliterators.spliterator(Iterator, long, int)
)根据使用迭代器的情况可能比扩展这个类更容易或更方便,例如当已经有迭代器可供使用。
Spliterators.spliterator(Iterator, long, int)
Spliterator.OfDouble, Spliterator.OfInt, Spliterator.OfLong, Spliterator.OfPrimitive<T,T_CONS,T_SPLITR extends Spliterator.OfPrimitive<T,T_CONS,T_SPLITR>>
CONCURRENT, DISTINCT, IMMUTABLE, NONNULL, ORDERED, SIZED, SORTED, SUBSIZED
Modifier | Constructor and Description |
---|---|
protected |
AbstractSpliterator(long est, int additionalCharacteristics)
创建一个报告给定估计大小和附加特征的分配器。
|
Modifier and Type | Method and Description |
---|---|
int |
characteristics()
返回此Spliterator及其元素的一组特征。
|
long |
estimateSize()
返回
Spliterator.forEachRemaining(java.util.function.Consumer<? super T>) 遍历将遇到的元素数量的估计值,如果无穷大,未知或计算
成本太高,则返回
Long.MAX_VALUE 。
|
Spliterator<T> |
trySplit()
如果此分割器可以被分区,返回一个包含元素的Spliter,当从该方法返回时,它不会被该Spliter所覆盖。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
forEachRemaining, getComparator, getExactSizeIfKnown, hasCharacteristics, tryAdvance
protected AbstractSpliterator(long est, int additionalCharacteristics)
est
- 如果已知该拼接器的大小,否则为
Long.MAX_VALUE
。
additionalCharacteristics
- 此拼接器的源或元素的属性。
如果SIZED
被报告,那么这个分配器将另外报告SUBSIZED
。
public Spliterator<T> trySplit()
如果此Spliterator为Spliterator.ORDERED
,则返回的Spliterator必须覆盖元素的严格前缀。
除非这个Spliterator包含无数个元素,否则重复调用trySplit()
必须最终返回null
。 非空返回:
estimateSize()
分割之前,必须分割后,大于或等于estimateSize()
,这和返回Spliterator; 和 SUBSIZED
,然后estimateSize()
这个spliterator分裂之前必须等于总和estimateSize()
,这和拆分后返回Spliterator。 该方法可能由于任何原因返回null
,包括空虚,遍历开始后无法拆分,数据结构约束和效率考虑。 这种实现允许有限的并行性。
trySplit
在界面
Spliterator<T>
Spliterator
覆盖部分元素,或
null
如果这个拼接器不能被拆分
public long estimateSize()
Spliterator.forEachRemaining(java.util.function.Consumer<? super T>)
遍历将遇到的元素数量的估计值,如果无穷大,未知或计算太贵,则返回Long.MAX_VALUE
。
如果此Spliterator为Spliterator.SIZED
并且尚未部分遍历或拆分,或该Spliterator为Spliterator.SUBSIZED
并且尚未部分遍历,则此估计必须是完整遍历将遇到的元素的精确计数。 否则,此估计可能是任意不准确的,但必须按照Spliterator.trySplit()
的调用指定减少 。
estimateSize
在界面
Spliterator<T>
Long.MAX_VALUE
如果无限,未知,或太贵的计算。
public int characteristics()
Spliterator.ORDERED
, Spliterator.DISTINCT
, Spliterator.SORTED
, Spliterator.SIZED
, Spliterator.NONNULL
, Spliterator.IMMUTABLE
, Spliterator.CONCURRENT
, Spliterator.SUBSIZED
。
重复调用characteristics()
在给定的spliterator之前或在两者之间的调用, trySplit
,应始终返回相同的结果。
如果Spliterator报告不一致的特征集(从单个调用返回的或多个调用返回的),则不能保证使用此Spliter的任何计算。
characteristics
在界面
Spliterator<T>
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.