模块  java.base
软件包  java.util

Class Spliterators.AbstractSpliterator<T>

  • 实现的所有接口
    Spliterator<T>
    Enclosing class:
    Spliterators

    public abstract static class Spliterators.AbstractSpliterator<T>
    extends Object
    implements Spliterator<T>
    实现trySplit的摘要Spliterator允许有限的并行性。

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

    API Note:
    当不可能或难以以允许平衡并行计算的方式有效地分区元素时,该类对于创建分裂器是有用的辅助。

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

    从以下版本开始:
    1.8
    另请参见:
    Spliterators.spliterator(Iterator, long, int)
    • 构造方法详细信息

      • AbstractSpliterator

        protected AbstractSpliterator​(long est,
                                      int additionalCharacteristics)
        创建一个报告给定估计大小和附加特征的分裂器。
        参数
        est - 此分裂器的估计大小(如果已知),否则为 Long.MAX_VALUE
        additionalCharacteristics - 此spliterator的源或元素的属性。 如果SIZED的报告,那么该spliterator将另外报告SUBSIZED
    • 方法详细信息

      • trySplit

        public Spliterator<T> trySplit()
        如果可以对此spliterator进行分区,则返回Spliterator覆盖元素,这些元素在从此方法返回时将不被此Spliterator覆盖。

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

        除非此Spliterator包含无限数量的元素,否则重复调用trySplit()最终必须返回null 在非null返回时:

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

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

        Specified by:
        trySplit在界面 Spliterator<T>
        结果
        一个 Spliterator覆盖所述元件的一些部分,或者 null如果此spliterator不能拆分