Module  java.base
软件包  java.util

Class Spliterators.AbstractSpliterator<T>

  • All Implemented Interfaces:
    Spliterator<T>
    Enclosing class:
    Spliterators


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

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

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

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

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

      • AbstractSpliterator

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

      • trySplit

        public Spliterator<T> trySplit​()
        如果此分割器可以被分区,返回一个包含元素的Spliter,当从该方法返回时,它不会被该Spliter所覆盖。

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

        除非这个Spliterator包含无数个元素,否则重复调用trySplit()必须最终返回null 非空返回:

        • 报告的价值estimateSize()分裂之前,必须分割后,大于或等于estimateSize() ,这和返回Spliterator;
        • 如果这Spliterator是SUBSIZED ,然后estimateSize()这个spliterator分裂之前必须等于总和estimateSize() ,这和拆分后返回Spliterator。

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

        Specified by:
        trySplit在接口 Spliterator<T>
        结果
        一个 Spliterator涵盖了部分元素,或 null如果此拼接器无法拆分
      • estimateSize

        public long estimateSize​()
        返回Spliterator.forEachRemaining(java.util.function.Consumer<? super T>)遍历将遇到的元素数量的估计值,如果无穷大,未知数或计算成本太高,则返回Long.MAX_VALUE

        如果此Spliterator是Spliterator.SIZED并且尚未被部分遍历或拆分,或者该分割器是Spliterator.SUBSIZED并且尚未被部分遍历,则此估计必须是完整遍历将遇到的元素的精确计数。 否则,该估计可能是任意不准确的,但必须按照Spliterator.trySplit()调用中的规定减少。

        Specified by:
        estimateSize在接口 Spliterator<T>
        实现要求:
        此实现返回创建时报告的估计大小,如果估计大小已知,则在分割时会减小大小。
        结果
        估计大小,或 Long.MAX_VALUE如果无限,未知或太贵,无法计算。