# Spliterator.OfPrimitive

public static interface **Spliterator.OfPrimitive** implements [Spliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html)\<T\>

|---|---|---|
| Known Indirect Subclasses [Spliterator.OfDouble](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfDouble.html), [Spliterator.OfInt](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfInt.html), [Spliterator.OfLong](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfLong.html), [Spliterators.AbstractDoubleSpliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterators.AbstractDoubleSpliterator.html), [Spliterators.AbstractIntSpliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterators.AbstractIntSpliterator.html), [Spliterators.AbstractLongSpliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterators.AbstractLongSpliterator.html) |---|---| | [Spliterator.OfDouble](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfDouble.html) | A Spliterator specialized for `double` values. | | [Spliterator.OfInt](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfInt.html) | A Spliterator specialized for `int` values. | | [Spliterator.OfLong](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfLong.html) | A Spliterator specialized for `long` values. | | [Spliterators.AbstractDoubleSpliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterators.AbstractDoubleSpliterator.html) | An abstract `Spliterator.OfDouble` that implements `trySplit` to permit limited parallelism. | | [Spliterators.AbstractIntSpliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterators.AbstractIntSpliterator.html) | An abstract `Spliterator.OfInt` that implements `trySplit` to permit limited parallelism. | | [Spliterators.AbstractLongSpliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterators.AbstractLongSpliterator.html) | An abstract `Spliterator.OfLong` that implements `trySplit` to permit limited parallelism. | |||

A Spliterator specialized for primitive values.

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfInt.html`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfLong.html`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfDouble.html`

### Inherited Constant Summary

From interface [java.util.Spliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html)

|---|---|---|
| int | [CONCURRENT](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#CONCURRENT) | Characteristic value signifying that the element source may be safely concurrently modified (allowing additions, replacements, and/or removals) by multiple threads without external synchronization. |
| int | [DISTINCT](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#DISTINCT) | Characteristic value signifying that, for each pair of encountered elements `x, y`, `!x.equals(y)`. |
| int | [IMMUTABLE](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#IMMUTABLE) | 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. |
| int | [NONNULL](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#NONNULL) | Characteristic value signifying that the source guarantees that encountered elements will not be `null`. |
| int | [ORDERED](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#ORDERED) | Characteristic value signifying that an encounter order is defined for elements. |
| int | [SIZED](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#SIZED) | 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. |
| int | [SORTED](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#SORTED) | Characteristic value signifying that encounter order follows a defined sort order. |
| int | [SUBSIZED](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#SUBSIZED) | Characteristic value signifying that all Spliterators resulting from `trySplit()` will be both `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#SIZED` and `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#SUBSIZED`. |

### Public Method Summary

|---|---|
| void | [forEachRemaining](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfPrimitive.html#forEachRemaining(T_CONS))(T_CONS action) 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 | [tryAdvance](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfPrimitive.html#tryAdvance(T_CONS))(T_CONS action) If a remaining element exists, performs the given action on it, returning `true`; else returns `false`. |
| abstract T_SPLITR | [trySplit](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.OfPrimitive.html#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 Method Summary

From interface [java.util.Spliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html)

|---|---|
| abstract int | [characteristics](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#characteristics())() Returns a set of characteristics of this Spliterator and its elements. |
| abstract long | [estimateSize](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#estimateSize())() Returns an estimate of the number of elements that would be encountered by a `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#forEachRemaining(java.util.function.Consumer<?%20super%20T>)` traversal, or returns `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Long.html#MAX_VALUE` if infinite, unknown, or too expensive to compute. |
| void | [forEachRemaining](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#forEachRemaining(java.util.function.Consumer<?%20super%20T>))([Consumer](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/function/Consumer.html)\<? super T\> action) 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. |
| [Comparator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Comparator.html)\<? super T\> | [getComparator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#getComparator())() If this Spliterator's source is `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#SORTED` by a `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Comparator.html`, returns that `Comparator`. |
| long | [getExactSizeIfKnown](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#getExactSizeIfKnown())() Convenience method that returns `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#estimateSize()` if this Spliterator is `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#SIZED`, else `-1`. |
| boolean | [hasCharacteristics](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#hasCharacteristics(int))(int characteristics) Returns `true` if this Spliterator's `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#characteristics()` contain all of the given characteristics. |
| abstract boolean | [tryAdvance](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#tryAdvance(java.util.function.Consumer<?%20super%20T>))([Consumer](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/function/Consumer.html)\<? super T\> action) If a remaining element exists, performs the given action on it, returning `true`; else returns `false`. |
| abstract [Spliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html)\<T\> | [trySplit](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#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. |

## Public Methods

#### public void
**forEachRemaining**
(T_CONS action)

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://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#ORDERED`,
actions are performed in encounter order. Exceptions thrown by the
action are relayed to the caller.

##### Parameters

| action | The action |
|---|---|

##### Throws

| [NullPointerException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/NullPointerException.html) | if the specified action is null |
|---|---|

#### public abstract boolean
**tryAdvance**
(T_CONS action)

If a remaining element exists, performs the given action on it,
returning `true`; else returns `false`. If this
Spliterator is `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#ORDERED` the action is performed on the
next element in encounter order. Exceptions thrown by the
action are relayed to the caller.

##### Parameters

| action | The action |
|---|---|

##### Returns

- `false` if no remaining elements existed upon entry to this method, else `true`.

##### Throws

| [NullPointerException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/NullPointerException.html) | if the specified action is null |
|---|---|

#### public abstract T_SPLITR
**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.

If this Spliterator is `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html#ORDERED`, 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.

##### Returns

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