Java Interface Spliterator

2025 年 1 月 7 日 | 阅读 3 分钟

Spliterators 可用于逐个**遍历**源的元素。这些源可以是数组、Collection、IO Channel 或生成器函数。

Spliterator 的主要功能是:

  • 拆分源数据
  • 处理源数据

Interface Spliterator 包含在 **JDK 8** 中,除了**顺序**遍历外,还可以利用**并行**的优势。它被设计为迭代器的并行模拟。

Java Interface Spliterator 声明

Java Interface Spliterator 方法

下面是所有 Java Spliterator 方法的列表,附带一些有用的描述:

序号修饰符 & 类型方法描述
1)intcharacteristics()用于获取此 Spliterator 及其元素的特征集。
2)longestimateSize()用于获取剩余要迭代的元素数量的估计值,如果元素数量是无限的、未知的或计算成本太高,则返回 Long.MAX_VALUE。
3)default voidForEachRemaining(Consumer action>)用于在当前线程中顺序地为每个剩余元素执行给定操作,直到所有元素都被处理完毕或操作抛出异常。
4)default comparatorgetComaparator()如果给定的 Spliterator?s 源是根据 Comparator 排序的,则用于获取该 Comparator。
5)default longgetExactSizeIfKnown()用于获取 SIZED spliterator 的 estimateSize(),否则返回 -1。
6)default booleanhasCharacteristics(int characteristics)如果此 Spliterator 的 characteristics() 包含所有给定的特征,则返回 true。
7)booleanTryAdvance(Consumer action>)用于在执行指定操作后获取现有元素。
8)splieratortrySplit()用于拆分调用此 spliterator。如果此 spliterator 可以被分区,则返回对分区的新 spliterator 的引用。否则,它返回 null。

示例 1

输出

Estimate size: 5
Exact size: 5
Boolean Result: true
Elements of ArrayList :
101
201
301
401
501
Output from splitr2: 
101
201
Output from splitr1: 
301
401
501

示例 2

输出

List of Fruit name-
Mango
Banana
Apple

示例 3

输出

Python
C++
Traversing the next half of the spliterator-
Java
Android