Module java.base
Package java.util

Class Spliterators.AbstractLongSpliterator

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
另请参阅:
  • Constructor Details

    • AbstractLongSpliterator

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

    • trySplit

      public Spliterator.OfLong 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.ORDEREDSpliterator.DISTINCTSpliterator.SORTEDSpliterator.SIZEDSpliterator.NONNULLSpliterator.IMMUTABLESpliterator.CONCURRENTSpliterator.SUBSIZED的ORed值。

      在对给定分割迭代器进行trySplit调用之前或之间的重复调用characteristics()应始终返回相同的结果。

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

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