java.lang.Object
java.util.Spliterators.AbstractSpliterator<T>
- 类型参数:
-
T
- 此Spliterator返回的元素类型
- 所有实现的接口:
-
Spliterator<T>
- 封闭类:
-
Spliterators
public abstract static class Spliterators.AbstractSpliterator<T> extends Object implements Spliterator<T>
- API注释:
-
当不可能或难以有效地对元素进行平衡并行计算时,此类是创建Spliterator的有用辅助工具。
使用此类的替代方法,也允许有限的并行性,是从迭代器创建Spliterator(参见
Spliterators.spliterator(Iterator, long, int)
)。根据情况,使用迭代器可能比扩展此类更容易或更方便,例如当已经有可用的迭代器时。 - 自1.8起:
- 1.8
- 另请参阅:
-
Nested Class Summary
Nested classes/interfaces declared in interface java.util.Spliterator
Spliterator.OfDouble, Spliterator.OfInt, Spliterator.OfLong, Spliterator.OfPrimitive<T,
T_CONS, T_SPLITR extends Spliterator.OfPrimitive<T, T_CONS, T_SPLITR>> -
Field Summary
Fields declared in interface java.util.Spliterator
CONCURRENT, DISTINCT, IMMUTABLE, NONNULL, ORDERED, SIZED, SORTED, SUBSIZED
-
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractSpliterator
(long est, int additionalCharacteristics) 创建一个报告给定估计大小和additionalCharacteristics的Spliterator。 -
Method Summary
Modifier and TypeMethodDescriptionint
返回此Spliterator及其元素的特征集。long
返回通过Spliterator.forEachRemaining(java.util.function.Consumer<? super T>)
遍历会遇到的元素数量的估计,如果是无限的、未知的或计算成本太高,则返回Long.MAX_VALUE
。trySplit()
如果此Spliterator可以被分割,则返回覆盖元素的Spliterator,在从此方法返回后,将不再被此Spliterator覆盖。Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface java.util.Spliterator
forEachRemaining, getComparator, getExactSizeIfKnown, hasCharacteristics, tryAdvance
-
Constructor Details
-
AbstractSpliterator
protected AbstractSpliterator(long est, int additionalCharacteristics) 创建一个报告给定估计大小和additionalCharacteristics的Spliterator。- 参数:
-
est
- 如果已知,则为此spliterator的估计大小,否则为Long.MAX_VALUE
。 -
additionalCharacteristics
- 此spliterator的源或元素的属性。如果报告了SIZED
,则此spliterator还将报告SUBSIZED
。
-
-
Method Details
-
trySplit
如果此Spliterator可以被分割,则返回覆盖元素的Spliterator,在从此方法返回后,将不再被此Spliterator覆盖。如果此Spliterator是
Spliterator.ORDERED
,则返回的Spliterator必须覆盖元素的严格前缀。除非此Spliterator覆盖无限数量的元素,否则重复调用
trySplit()
最终必须返回null
。在非null返回时:- 拆分之前报告的
estimateSize()
的值,在拆分后,必须大于或等于此Spliterator和返回的Spliterator的estimateSize()
;和 - 如果此Spliterator是
SUBSIZED
,则拆分之前此spliterator的estimateSize()
必须等于拆分后此spliterator和返回的Spliterator的estimateSize()
之和。
此方法可能出于任何原因返回
null
,包括空、在遍历开始后无法拆分、数据结构约束和效率考虑。此实现允许有限的并行性。- 指定者:
-
trySplit
在接口Spliterator<T>
- 返回:
-
覆盖一些元素的
Spliterator
,如果此spliterator无法拆分,则返回null
- 拆分之前报告的
-
estimateSize
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
。
-
characteristics
public int characteristics()返回此Spliterator及其元素的特征集。结果表示为来自Spliterator.ORDERED
、Spliterator.DISTINCT
、Spliterator.SORTED
、Spliterator.SIZED
、Spliterator.NONNULL
、Spliterator.IMMUTABLE
、Spliterator.CONCURRENT
、Spliterator.SUBSIZED
的ORed值。在对给定的spliterator进行trySplit
之前或之间的重复调用characteristics()
应始终返回相同的结果。如果一个Spliterator报告了不一致的特征集(无论是从单次调用返回的还是跨多次调用返回的),则不能保证使用此Spliterator进行任何计算。
- 指定者:
-
characteristics
在接口Spliterator<T>
- 实现要求:
- 此实现返回创建时报告的特征。
- 返回:
- 特征的表示
-