public abstract static class Spliterators.AbstractIntSpliterator extends Object implements Spliterator.OfInt
Spliterator.OfInt
实现trySplit
以允许有限的并行性。
要实现一个扩展类,只需要实现Spliterator.OfInt.tryAdvance(java.util.function.IntConsumer)
tryAdvance}。 如果扩展类可以覆盖Spliterator.OfInt.forEachRemaining(java.util.function.IntConsumer)
forEach},如果它可以提供更高性能的实现。
使用这个类的一个替代方法也允许有限的并行性是从迭代器创建一个分片器(参见Spliterators.spliterator(java.util.PrimitiveIterator.OfInt, long, int)
)根据使用迭代器的情况可能比扩展这个类更容易或更方便,例如,如果已经有可以使用的迭代器,那么就不需要扩展这个类。
Spliterators.spliterator(java.util.PrimitiveIterator.OfInt, 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 |
AbstractIntSpliterator(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.OfInt |
trySplit()
如果此分割器可以被分区,返回一个包含元素的Spliter,当从该方法返回时,它不会被该Spliter所覆盖。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
forEachRemaining, forEachRemaining, tryAdvance, tryAdvance
getComparator, getExactSizeIfKnown, hasCharacteristics
protected AbstractIntSpliterator(long est, int additionalCharacteristics)
est
- 如果已知该拼接器的大小,否则为
Long.MAX_VALUE
。
additionalCharacteristics
- 此spliterator的源或元素的属性。
如果报告SIZED
,那么这个分配器将另外报告SUBSIZED
。
public Spliterator.OfInt trySplit()
如果此Spliterator为Spliterator.ORDERED
,则返回的Spliterator必须覆盖元素的严格前缀。
除非这个Spliterator包含无数个元素,否则重复调用trySplit()
必须最终返回null
。 非空返回:
estimateSize()
分割之前,必须分割后,大于或等于estimateSize()
,这和返回Spliterator; 和 SUBSIZED
,然后estimateSize()
这个spliterator分裂之前必须等于总和estimateSize()
,这和拆分后返回Spliterator。 该方法可能由于任何原因返回null
,包括空虚,遍历开始后无法拆分,数据结构约束和效率考虑。 这种实现允许有限的并行性。
trySplit
在界面
Spliterator<Integer>
trySplit
在界面
Spliterator.OfInt
trySplit
在接口
Spliterator.OfPrimitive<Integer,IntConsumer,Spliterator.OfInt>
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<Integer>
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<Integer>