Module java.base
Package java.util

Class Spliterators.AbstractSpliterator<T>

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>
一个抽象的Spliterator,实现了trySplit以允许有限的并行性。

扩展类只需实现tryAdvance。如果扩展类可以提供更高性能的实现,则应覆盖forEachRemaining

API注释:
当不可能或难以有效地对元素进行平衡并行计算时,此类是创建Spliterator的有用辅助工具。

使用此类的替代方法,也允许有限的并行性,是从迭代器创建Spliterator(参见Spliterators.spliterator(Iterator, long, int))。根据情况,使用迭代器可能比扩展此类更容易或更方便,例如当已经有可用的迭代器时。

自1.8起:
1.8
另请参阅:
  • Constructor Details

    • AbstractSpliterator

      protected AbstractSpliterator(long est, int additionalCharacteristics)
      创建一个报告给定估计大小和additionalCharacteristics的Spliterator。
      参数:
      est - 如果已知,则为此spliterator的估计大小,否则为Long.MAX_VALUE
      additionalCharacteristics - 此spliterator的源或元素的属性。如果报告了SIZED,则此spliterator还将报告SUBSIZED
  • Method Details

    • trySplit

      public Spliterator<T> 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.ORDEREDSpliterator.DISTINCTSpliterator.SORTEDSpliterator.SIZEDSpliterator.NONNULLSpliterator.IMMUTABLESpliterator.CONCURRENTSpliterator.SUBSIZED的ORed值。在对给定的spliterator进行trySplit之前或之间的重复调用characteristics()应始终返回相同的结果。

      如果一个Spliterator报告了不一致的特征集(无论是从单次调用返回的还是跨多次调用返回的),则不能保证使用此Spliterator进行任何计算。

      指定者:
      characteristics 在接口 Spliterator<T>
      实现要求:
      此实现返回创建时报告的特征。
      返回:
      特征的表示