介紹
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