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

# AbstractIntSpliterator

```
abstract class AbstractIntSpliterator : Spliterator.OfInt
```

|---|---|
| [kotlin.Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html) ||
| ↳ | [java.util.Spliterators.AbstractIntSpliterator](https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractIntSpliterator#) |

An abstract `Spliterator.OfInt` that implements `trySplit` to permit limited parallelism.

To implement a spliterator an extending class need only implement `https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt#tryAdvance(java.util.function.IntConsumer)`. The extending class should override `https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt#forEachRemaining(java.util.function.IntConsumer)` if it can provide a more performant implementation.

## Summary

| Protected constructors ||
|---|---|
| `https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractIntSpliterator#AbstractIntSpliterator(kotlin.Long,%20kotlin.Int)(est: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html, additionalCharacteristics: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)` Creates a spliterator reporting the given estimated size and characteristics. |

| Public methods ||
|---|---|
| open [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) | `https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractIntSpliterator#characteristics()()` Returns a set of characteristics of this Spliterator and its elements. |
| open [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html) | `https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractIntSpliterator#estimateSize()()` Returns an estimate of the number of elements that would be encountered by a `https://developer.android.com/reference/kotlin/java/util/Spliterator#forEachRemaining(java.util.function.Consumer)` traversal, or returns `https://developer.android.com/reference/kotlin/java/lang/Long.html#MAX_VALUE:kotlin.Long` if infinite, unknown, or too expensive to compute. |
| open [Spliterator.OfInt](https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt)! | `https://developer.android.com/reference/kotlin/java/util/Spliterators.AbstractIntSpliterator#trySplit()()` If this spliterator can be partitioned, returns a Spliterator covering elements, that will, upon return from this method, not be covered by this Spliterator. |

| Inherited functions ||
|---|---|
| From class `https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt` |---|---| | `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt#forEachRemaining(java.util.function.Consumer)(action: https://developer.android.com/reference/kotlin/java/util/function/Consumer<in https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html!>!)` 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 `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 /> | | `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt#forEachRemaining(java.util.function.IntConsumer)(action: https://developer.android.com/reference/kotlin/java/util/function/IntConsumer!)` 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 `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 /> | | `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt#tryAdvance(java.util.function.Consumer)(action: https://developer.android.com/reference/kotlin/java/util/function/Consumer<in https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html!>!)` If a remaining element exists: performs the given action on it, returning `true`; else returns `false`. If this Spliterator is `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 /> | | `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt#tryAdvance(java.util.function.IntConsumer)(action: https://developer.android.com/reference/kotlin/java/util/function/IntConsumer!)` If a remaining element exists, performs the given action on it, returning `true`; else returns `false`. If this Spliterator is `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 /> | ||

## Protected constructors

### AbstractIntSpliterator

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

```
protected AbstractIntSpliterator(
    est: Long, 
    additionalCharacteristics: Int)
```

Creates a spliterator reporting the given estimated size and characteristics.

| Parameters ||
|---|---|
| `est` | [Long](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html): the estimated size of this spliterator if known, otherwise `Long.MAX_VALUE`. |
| `additionalCharacteristics` | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html): properties of this spliterator's source or elements. If `SIZED` is reported then this spliterator will additionally report `SUBSIZED`. |

## Public methods

### characteristics

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

```
open fun characteristics(): Int
```

Returns a set of characteristics of this Spliterator and its elements. The result is represented as ORed values from `https://developer.android.com/reference/kotlin/java/util/Spliterator#ORDERED:kotlin.Int`, `https://developer.android.com/reference/kotlin/java/util/Spliterator#DISTINCT:kotlin.Int`, `https://developer.android.com/reference/kotlin/java/util/Spliterator#SORTED:kotlin.Int`, `https://developer.android.com/reference/kotlin/java/util/Spliterator#SIZED:kotlin.Int`, `https://developer.android.com/reference/kotlin/java/util/Spliterator#NONNULL:kotlin.Int`, `https://developer.android.com/reference/kotlin/java/util/Spliterator#IMMUTABLE:kotlin.Int`, `https://developer.android.com/reference/kotlin/java/util/Spliterator#CONCURRENT:kotlin.Int`, `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.

| Return ||
|---|---|
| `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html` | a representation of characteristics |

### estimateSize

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

```
open fun estimateSize(): Long
```

Returns an estimate of the number of elements that would be encountered by a `https://developer.android.com/reference/kotlin/java/util/Spliterator#forEachRemaining(java.util.function.Consumer)` traversal, or returns `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 `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 `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 `https://developer.android.com/reference/kotlin/java/util/Spliterator#trySplit()`.

| Return ||
|---|---|
| `https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html` | the estimated size, or `Long.MAX_VALUE` if infinite, unknown, or too expensive to compute. |

### trySplit

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

```
open fun trySplit(): Spliterator.OfInt!
```

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

If this Spliterator is `https://developer.android.com/reference/kotlin/java/util/Spliterator#ORDERED:kotlin.Int`, the returned Spliterator must cover a strict prefix of the elements.

Unless this Spliterator covers an infinite number of elements, repeated calls to `trySplit()` must eventually return `null`. Upon non-null return:

- the value reported for `estimateSize()` before splitting, must, after splitting, be greater than or equal to `estimateSize()` for this and the returned Spliterator; and
- if this Spliterator is `SUBSIZED`, then `estimateSize()` for this spliterator before splitting must be equal to the sum of `estimateSize()` for this and the returned Spliterator after splitting.

This method may return `null` for any reason, including emptiness, inability to split after traversal has commenced, data structure constraints, and efficiency considerations. This implementation permits limited parallelism.

| Return ||
|---|---|
| `https://developer.android.com/reference/kotlin/java/util/Spliterator.OfInt!` | a `Spliterator` covering some portion of the elements, or `null` if this spliterator cannot be split |