20230602 java.util.Spliterator
介绍
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