20230602 java.util.Spliterator

发布时间 2023-08-30 17:22:01作者: 流星<。)#)))≦

介绍

  • java.util.Spliterator
  • public interface Spliterator<T>
  • 可分割迭代器
  • Spliterator 用于将一个数据源分割为多个部分,每个部分可以在不同的线程中进行遍历。 Spliterator 也为并行流提供了支持。

API

常量

这些常量都是特征值:

  • ORDERED
    • 遍历的元素以当前状态的某种特定顺序排列
  • DISTINCT
    • 元素不重复
  • SORTED
    • 元素在遍历时按照某种排序方式被返回
    • 报告 SORTED 也必须报告 ORDERED
  • SIZED
    • 具有已知大小,即 estimateSize() 方法的返回值是精确的
  • NONNULL
    • 元素不为 null
  • IMMUTABLE
    • 元素是不可变的
  • CONCURRENT
    • 支持并发遍历
  • SUBSIZED
    • Spliterator 分割出的子 Spliterator 也具有已知大小,即estimateSize() 方法的返回值是精确的

public

  • tryAdvance
    • boolean tryAdvance(Consumer<? super T> action);
    • 执行给定的操作,如果当前元素存在且被消费了,则返回 true
  • forEachRemaining
    • void forEachRemaining(Consumer<? super T> action)
    • 对剩余元素执行给定的操作,直到遇到最后一个元素或执行操作时出现异常为止
  • trySplit
    • Spliterator<T> trySplit();
    • 尝试将元素分成两部分,遍历这一部分并返回一个新的 Spliterator 用于遍历剩余部分。如果不能进行进一步的划分,则返回 null。此方法用于将数据源分成多个部分,以便在不同线程中分别处理。
  • estimateSize
    • long estimateSize();
    • 估计还剩下多少元素需要遍历,可能不准确
  • getExactSizeIfKnown
    • long getExactSizeIfKnown()
    • 如果此 Spliterator 为 SIZED 则返回 estimateSize() ,否则返回 -1
  • characteristics
    • int characteristics();
    • 返回特征值
  • hasCharacteristics
    • boolean hasCharacteristics(int characteristics)
    • 判断是否具有特征值
  • getComparator
    • Comparator<? super T> getComparator()
    • 如果 SORTED ,则返回 Comparator 。如果按自然顺序,则返回 null 。否则,如果源不是 SORTED ,则抛出 IllegalStateException