Spliterator

interface Spliterator<T>

An object for traversing and partitioning elements of a source. The source could be an array, a Collection, an IO channel, or a generator function.

Spliterators support sequential traversal (tryAdvance, forEachRemaining) and parallel decomposition (trySplit). They report characteristics about their structure and elements.

Type Parameters

T

the type of elements returned by this Spliterator

Inheritors

Types

Link copied to clipboard
object Companion
Link copied to clipboard

A Spliterator specialized for Double values.

Link copied to clipboard

A Spliterator specialized for Int values.

Link copied to clipboard

A Spliterator specialized for Long values.

Link copied to clipboard

Base interface for Spliterators specialized for primitive values.

Functions

Link copied to clipboard
abstract fun characteristics(): Int

Returns a set of characteristics of this Spliterator and its elements. The result is represented as ORed values from the constants defined in the companion object (ORDERED, DISTINCT, etc.).

Link copied to clipboard
abstract fun estimateSize(): Long

Returns an estimate of the number of elements that would be encountered by a forEachRemaining traversal, or Long.MAX_VALUE if infinite, unknown, or too expensive to compute.

Link copied to clipboard
open fun forEachRemaining(action: (T) -> Unit)

Performs the given action for each remaining element, sequentially, until all elements have been processed or the action throws an exception. If this Spliterator is ORDERED, actions are performed in encounter order. Exceptions thrown by the action are relayed to the caller.

Link copied to clipboard
open fun getComparator(): Comparator<in T>?

If SORTED by a Comparator, returns that Comparator. If SORTED in natural order, returns null. Otherwise (not SORTED), throws IllegalStateException.

Link copied to clipboard

Convenience method returning estimateSize if SIZED, else -1L.

Link copied to clipboard
open fun hasCharacteristics(characteristics: Int): Boolean

Returns true if this Spliterator's characteristics contain all of the given characteristics.

Link copied to clipboard
abstract fun tryAdvance(action: (T) -> Unit): Boolean

If a remaining element exists: performs the given action on it, returning true; else returns false. If this Spliterator is ORDERED, the action is performed on the next element in encounter order. Exceptions thrown by the action are relayed to the caller.

Link copied to clipboard
abstract fun trySplit(): Spliterator<T>?

If this spliterator can be partitioned, returns a Spliterator covering elements that will, upon return, not be covered by this Spliterator.