Spliterator
public
interface
Spliterator
| java.util.Spliterator<T> |
An object for traversing and partitioning elements of a source. The source
of elements covered by a Spliterator could be, for example, an array, a
Collection, an IO channel, or a generator function.
A Spliterator may traverse elements individually (tryAdvance()) or sequentially in bulk
(forEachRemaining()).
A Spliterator may also partition off some of its elements (using
trySplit()) as another Spliterator, to be used in
possibly-parallel operations. Operations using a Spliterator that
cannot split, or does so in a highly imbalanced or inefficient
manner, are unlikely to benefit from parallelism. Traversal
and splitting exhaust elements; each Spliterator is useful for only a single
bulk computation.
A Spliterator also reports a set of characteristics() of its
structure, source, and elements from among ORDERED,
DISTINCT, SORTED, SIZED, NONNULL,
IMMUTABLE, CONCURRENT, and SUBSIZED. These may
be employed by Spliterator clients to control, specialize or simplify
computation. For example, a Spliterator for a Collection would
report SIZED, a Spliterator for a Set would report
DISTINCT, and a Spliterator for a SortedSet would also
report SORTED. Characteristics are reported as a simple unioned bit
set.
Some characteristics additionally constrain method behavior; for example