模块 java.base
 java.util

类 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>
实现 trySplit 以允许有限并行的抽象 Spliterator

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

API 注意:
当无法或难以以允许平衡并行计算的方式有效地划分元素时,此类有助于创建拆分器。

使用此类的另一种方法(也允许有限的并行性)是从迭代器创建拆分器(请参阅 Spliterators.spliterator(Iterator, long, int) 。根据具体情况,使用迭代器可能比扩展此类更容易或更方便,例如当已经有一个可用的迭代器。

自从:
1.8
参见:
  • 构造方法详细信息

    • AbstractSpliterator

      protected AbstractSpliterator(long est, int additionalCharacteristics)
      创建报告给定估计大小和 additionalCharacteristics 的拆分器。
      参数:
      est - 此拆分器的估计大小(如果已知),否则为 Long.MAX_VALUE
      additionalCharacteristics - 此拆分器的源或元素的属性。如果 SIZED 被报告,那么这个拆分器将另外报告 SUBSIZED
  • 方法详情

    • trySplit

      public Spliterator <T > trySplit()
      如果此 spliterator 可以分区,则返回一个 Spliterator 重写元素,从该方法返回时,该 Spliterator 将不被此 Spliterator 重写。

      如果此 Spliterator 是 Spliterator.ORDERED ,则返回的 Spliterator 必须覆盖元素的严格前缀。

      除非此 Spliterator 涵盖无限数量的元素,否则对 trySplit() 的重复调用最终必须返回 null 。返回非空值时:

      • 拆分前为 estimateSize() 报告的值,在拆分后必须大于或等于此和返回的 Spliterator 的 estimateSize();和
      • 如果此 Spliterator 是 SUBSIZED ,则拆分前此拆分器的 estimateSize() 必须等于此拆分器的 estimateSize() 和拆分后返回的 Spliterator 的总和。

      该方法可能出于任何原因返回null,包括空、遍历开始后无法拆分、数据结构约束和效率考虑。此实现允许有限的并行性。

      指定者:
      trySplit 在接口 Spliterator<T>
      返回:
      a 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 值。在调用 trySplit 之前或之间,在给定的拆分器上重复调用 characteristics() 应该始终返回相同的结果。

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

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