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