# Spliterator.OfPrimitive

Added in[API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

# OfPrimitive

```
interface OfPrimitive<T : Any!, T_CONS : Any!, T_SPLITR : Spliterator.OfPrimitive<T, T_CONS, T_SPLITR>!> : Spliterator<T>
```

|------------------------------------------------------------------------------------------------------------------------|
| [java.util.Spliterator.OfPrimitive](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfPrimitive#) |

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known Direct Subclasses [Spliterator.OfDouble](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfDouble),[Spliterator.OfInt](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt),[Spliterator.OfLong](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfLong) |-------------------------------------------------------------------------------------------------------|----------------------------------------------| | [Spliterator.OfDouble](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfDouble) | A Spliterator specialized for`double`values. | | [Spliterator.OfInt](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt)       | A Spliterator specialized for`int`values.    | | [Spliterator.OfLong](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfLong)     | A Spliterator specialized for`long`values.   | |

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known Indirect Subclasses [Spliterators.AbstractDoubleSpliterator](https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractDoubleSpliterator),[Spliterators.AbstractIntSpliterator](https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractIntSpliterator),[Spliterators.AbstractLongSpliterator](https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractLongSpliterator) |-------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| | [Spliterators.AbstractDoubleSpliterator](https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractDoubleSpliterator) | An abstract`Spliterator.OfDouble`that implements`trySplit`to permit limited parallelism. | | [Spliterators.AbstractIntSpliterator](https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractIntSpliterator)       | An abstract`Spliterator.OfInt`that implements`trySplit`to permit limited parallelism.    | | [Spliterators.AbstractLongSpliterator](https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractLongSpliterator)     | An abstract`Spliterator.OfLong`that implements`trySplit`to permit limited parallelism.   | |

A Spliterator specialized for primitive values.

## Summary

| Inherited constants ||
|---|---|
| From class[Spliterator](https://developer.android.com/reference/kotlin/java/util/Spliterator) |----------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | [CONCURRENT](https://developer.android.com/reference/kotlin/java/util/Spliterator#CONCURRENT:kotlin.Int) <br /> Characteristic value signifying that the element source may be safely concurrently modified (allowing additions, replacements, and/or removals) by multiple threads without external synchronization. If so, the Spliterator is expected to have a documented policy concerning the impact of modifications during traversal. A top-level Spliterator should not report both`CONCURRENT`and`SIZED`, since the finite size, if known, may change if the source is concurrently modified during traversal. Such a Spliterator is inconsistent and no guarantees can be made about any computation using that Spliterator. Sub-spliterators may report`SIZED`if the sub-split size is known and additions or removals to the source are not reflected when traversing. A top-level Spliterator should not report both`CONCURRENT`and`IMMUTABLE`, since they are mutually exclusive. Such a Spliterator is inconsistent and no guarantees can be made about any computation using that Spliterator. Sub-spliterators may report`IMMUTABLE`if additions or removals to the source are not reflected when traversing. <br /> | | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | [DISTINCT](https://developer.android.com/reference/kotlin/java/util/Spliterator#DISTINCT:kotlin.Int) <br /> Characteristic value signifying that, for each pair of encountered elements`x, y`,`!x.equals(y)`. This applies for example, to a Spliterator based on a[Set](https://developer.android.com/reference/kotlin/java/util/Set). <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | [IMMUTABLE](https://developer.android.com/reference/kotlin/java/util/Spliterator#IMMUTABLE:kotlin.Int) <br /> Characteristic value signifying that the element source cannot be structurally modified; that is, elements cannot be added, replaced, or removed, so such changes cannot occur during traversal. A Spliterator that does not report`IMMUTABLE`or`CONCURRENT`is expected to have a documented policy (for example throwing[ConcurrentModificationException](https://developer.android.com/reference/kotlin/java/util/ConcurrentModificationException)) concerning structural interference detected during traversal. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | [NONNULL](https://developer.android.com/reference/kotlin/java/util/Spliterator#NONNULL:kotlin.Int) <br /> Characteristic value signifying that the source guarantees that encountered elements will not be`null`. (This applies, for example, to most concurrent collections, queues, and maps.) <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | [ORDERED](https://developer.android.com/reference/kotlin/java/util/Spliterator#ORDERED:kotlin.Int) <br /> Characteristic value signifying that an encounter order is defined for elements. If so, this Spliterator guarantees that method[trySplit](https://developer.android.com/reference/kotlin/java/util/Spliterator#trySplit())splits a strict prefix of elements, that method[tryAdvance](https://developer.android.com/reference/kotlin/java/util/Spliterator#tryAdvance(java.util.function.Consumer))steps by one element in prefix order, and that[forEachRemaining](https://developer.android.com/reference/kotlin/java/util/Spliterator#forEachRemaining(java.util.function.Consumer))performs actions in encounter order. A[Collection](https://developer.android.com/reference/kotlin/java/util/Collection)has an encounter order if the corresponding[Collection.iterator](https://developer.android.com/reference/kotlin/java/util/Collection#iterator())documents an order. If so, the encounter order is the same as the documented order. Otherwise, a collection does not have an encounter order. <br />                                                                                                           | | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | [SIZED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SIZED:kotlin.Int) <br /> Characteristic value signifying that the value returned from`estimateSize()`prior to traversal or splitting represents a finite size that, in the absence of structural source modification, represents an exact count of the number of elements that would be encountered by a complete traversal. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | [SORTED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SORTED:kotlin.Int) <br /> Characteristic value signifying that encounter order follows a defined sort order. If so, method[getComparator()](https://developer.android.com/reference/kotlin/java/util/Spliterator#getComparator())returns the associated Comparator, or`null`if all elements are[Comparable](https://developer.android.com/reference/kotlin/java/lang/Comparable.html#)and are sorted by their natural ordering. A Spliterator that reports`SORTED`must also report`ORDERED`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | [SUBSIZED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SUBSIZED:kotlin.Int) <br /> Characteristic value signifying that all Spliterators resulting from`trySplit()`will be both[SIZED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SIZED:kotlin.Int)and[SUBSIZED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SUBSIZED:kotlin.Int). (This means that all child Spliterators, whether direct or indirect, will be`SIZED`.) A Spliterator that does not report`SIZED`as required by`SUBSIZED`is inconsistent and no guarantees can be made about any computation using that Spliterator. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | ||

|                                                                                                                                                                                                                    Public methods                                                                                                                                                                                                                     ||
|--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| open[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)           | [forEachRemaining](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfPrimitive#forEachRemaining(java.util.Spliterator.OfPrimitive.T_CONS))`(`action:` `T_CONS`)` Performs the given action for each remaining element, sequentially in the current thread, until all elements have been processed or the action throws an exception. |
| abstract[Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) | [tryAdvance](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfPrimitive#tryAdvance(java.util.Spliterator.OfPrimitive.T_CONS))`(`action:` `T_CONS`)` If a remaining element exists, performs the given action on it, returning`true`; else returns`false`.                                                                           |
| abstractT_SPLITR                                                                           | [trySplit](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfPrimitive#trySplit())`()` <br />                                                                                                                                                                                                                                        |

| Inherited functions ||
|---|---|
| From class[Spliterator](https://developer.android.com/reference/kotlin/java/util/Spliterator) |--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)                 | [characteristics](https://developer.android.com/reference/kotlin/java/util/Spliterator#characteristics())`()` <br /> Returns a set of characteristics of this Spliterator and its elements. The result is represented as ORed values from[ORDERED](https://developer.android.com/reference/kotlin/java/util/Spliterator#ORDERED:kotlin.Int),[DISTINCT](https://developer.android.com/reference/kotlin/java/util/Spliterator#DISTINCT:kotlin.Int),[SORTED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SORTED:kotlin.Int),[SIZED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SIZED:kotlin.Int),[NONNULL](https://developer.android.com/reference/kotlin/java/util/Spliterator#NONNULL:kotlin.Int),[IMMUTABLE](https://developer.android.com/reference/kotlin/java/util/Spliterator#IMMUTABLE:kotlin.Int),[CONCURRENT](https://developer.android.com/reference/kotlin/java/util/Spliterator#CONCURRENT:kotlin.Int),[SUBSIZED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SUBSIZED:kotlin.Int). Repeated calls to`characteristics()`on a given spliterator, prior to or in-between calls to`trySplit`, should always return the same result. If a Spliterator reports an inconsistent set of characteristics (either those returned from a single invocation or across multiple invocations), no guarantees can be made about any computation using this Spliterator. <br /> | | [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html)               | [estimateSize](https://developer.android.com/reference/kotlin/java/util/Spliterator#estimateSize())`()` <br /> Returns an estimate of the number of elements that would be encountered by a[forEachRemaining](https://developer.android.com/reference/kotlin/java/util/Spliterator#forEachRemaining(java.util.function.Consumer))traversal, or returns[java.lang.Long#MAX_VALUE](https://developer.android.com/reference/kotlin/java/lang/Long.html#MAX_VALUE:kotlin.Long)if infinite, unknown, or too expensive to compute. If this Spliterator is[SIZED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SIZED:kotlin.Int)and has not yet been partially traversed or split, or this Spliterator is[SUBSIZED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SUBSIZED:kotlin.Int)and has not yet been partially traversed, this estimate must be an accurate count of elements that would be encountered by a complete traversal. Otherwise, this estimate may be arbitrarily inaccurate, but must decrease as specified across invocations of[trySplit](https://developer.android.com/reference/kotlin/java/util/Spliterator#trySplit()). <br />                                                                                                                                                                                                                                                         | | [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)               | [forEachRemaining](https://developer.android.com/reference/kotlin/java/util/Spliterator#forEachRemaining(java.util.function.Consumer))`(`action:` `[Consumer](https://developer.android.com/reference/kotlin/java/util/function/Consumer)<in` `T>!`)` <br /> Performs the given action for each remaining element, sequentially in the current thread, until all elements have been processed or the action throws an exception. If this Spliterator is[ORDERED](https://developer.android.com/reference/kotlin/java/util/Spliterator#ORDERED:kotlin.Int), actions are performed in encounter order. Exceptions thrown by the action are relayed to the caller. Subsequent behavior of a spliterator is unspecified if the action throws an exception. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | | [Comparator](https://developer.android.com/reference/kotlin/java/util/Comparator)<in` `T>! | [getComparator](https://developer.android.com/reference/kotlin/java/util/Spliterator#getComparator())`()` <br /> If this Spliterator's source is[SORTED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SORTED:kotlin.Int)by a[Comparator](https://developer.android.com/reference/kotlin/java/util/Comparator), returns that`Comparator`. If the source is`SORTED`in[natural order](https://developer.android.com/reference/kotlin/java/lang/Comparable.html#), returns`null`. Otherwise, if the source is not`SORTED`, throws[IllegalStateException](https://developer.android.com/reference/kotlin/java/lang/IllegalStateException.html#). <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | | [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html)               | [getExactSizeIfKnown](https://developer.android.com/reference/kotlin/java/util/Spliterator#getExactSizeIfKnown())`()` <br /> Convenience method that returns[estimateSize()](https://developer.android.com/reference/kotlin/java/util/Spliterator#estimateSize())if this Spliterator is[SIZED](https://developer.android.com/reference/kotlin/java/util/Spliterator#SIZED:kotlin.Int), else`-1`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | | [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)         | [hasCharacteristics](https://developer.android.com/reference/kotlin/java/util/Spliterator#hasCharacteristics(kotlin.Int))`(`characteristics:` `[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)`)` <br /> Returns`true`if this Spliterator's[characteristics](https://developer.android.com/reference/kotlin/java/util/Spliterator#characteristics())contain all of the given characteristics. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | | [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)         | [tryAdvance](https://developer.android.com/reference/kotlin/java/util/Spliterator#tryAdvance(java.util.function.Consumer))`(`action:` `[Consumer](https://developer.android.com/reference/kotlin/java/util/function/Consumer)<in` `T>!`)` <br /> If a remaining element exists: performs the given action on it, returning`true`; else returns`false`. If this Spliterator is[ORDERED](https://developer.android.com/reference/kotlin/java/util/Spliterator#ORDERED:kotlin.Int)the action is performed on the next element in encounter order. Exceptions thrown by the action are relayed to the caller. Subsequent behavior of a spliterator is unspecified if the action throws an exception. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | ||

## Public methods

### forEachRemaining

Added in[API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)  

```
open fun forEachRemaining(action: T_CONS): Unit
```

Performs the given action for each remaining element, sequentially in the current thread, until all elements have been processed or the action throws an exception. If this Spliterator is[ORDERED](https://developer.android.com/reference/kotlin/java/util/Spliterator#ORDERED:kotlin.Int), actions are performed in encounter order. Exceptions thrown by the action are relayed to the caller.

Subsequent behavior of a spliterator is unspecified if the action throws an exception.

|         Parameters          ||
|----------|-------------------|
| `action` | T_CONS:The action |

|                            Exceptions                             ||
|----------------------------------|---------------------------------|
| `java.lang.NullPointerException` | if the specified action is null |

### tryAdvance

Added in[API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)  

```
abstract fun tryAdvance(action: T_CONS): Boolean
```

If a remaining element exists, performs the given action on it, returning`true`; else returns`false`. If this Spliterator is[ORDERED](https://developer.android.com/reference/kotlin/java/util/Spliterator#ORDERED:kotlin.Int)the action is performed on the next element in encounter order. Exceptions thrown by the action are relayed to the caller.

Subsequent behavior of a spliterator is unspecified if the action throws an exception.

|         Parameters          ||
|----------|-------------------|
| `action` | T_CONS:The action |

|                                                                               Return                                                                               ||
|------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|
| [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) | `false`if no remaining elements existed upon entry to this method, else`true`. |

|                            Exceptions                             ||
|----------------------------------|---------------------------------|
| `java.lang.NullPointerException` | if the specified action is null |

### trySplit

Added in[API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)  

```
abstract fun trySplit(): T_SPLITR
```

|                                                   Return                                                   ||
|----------|--------------------------------------------------------------------------------------------------|
| T_SPLITR | a`Spliterator`covering some portion of the elements, or`null`if this spliterator cannot be split |