Class IntSpliterators
public final class IntSpliterators
extends java.lang.Object
 Since:
 8.5.0
 Author:
 C. Sean Young <csyoung@google.com>
 See Also:
Spliterators

Nested Class Summary
Nested Classes Modifier and Type Class Description static class
IntSpliterators.AbstractIndexBasedSpliterator
A skeletal implementation for a spliterator backed by an index based data store.static class
IntSpliterators.EarlyBindingSizeIndexBasedSpliterator
A skeletal implementation for a spliterator backed by an index based data store.static class
IntSpliterators.EmptySpliterator
A class returning no elements and a typespecific spliterator interface.static class
IntSpliterators.LateBindingSizeIndexBasedSpliterator
A skeletal implementation for a spliterator backed by an index based data store. 
Field Summary
Fields Modifier and Type Field Description static int
COLLECTION_SPLITERATOR_CHARACTERISTICS
static IntSpliterators.EmptySpliterator
EMPTY_SPLITERATOR
An empty spliterator.static int
LIST_SPLITERATOR_CHARACTERISTICS
static int
SET_SPLITERATOR_CHARACTERISTICS
static int
SORTED_SET_SPLITERATOR_CHARACTERISTICS

Method Summary
Modifier and Type Method Description static IntSpliterator
asIntSpliterator(java.util.Spliterator i)
Wraps a standard spliterator into a typespecific spliterator.static IntSpliterator
asIntSpliterator(java.util.Spliterator i, IntComparator comparatorOverride)
Wraps a standard spliterator into a typespecific spliterator.static IntIterator
asIterator(IntSpliterator spliterator)
Wrap a typespecificSpliterator
as a typespecificIterator
static IntSpliterator
asSpliterator(IntIterator iter, long size, int additionalCharacterisitcs)
Wrap a typespecificIterator
of a known size as a typespecificSpliterator
static IntSpliterator
asSpliteratorFromSorted(IntIterator iter, long size, int additionalCharacterisitcs, IntComparator comparator)
Wrap a typespecific, sortedIterator
of a known size as a typespecificSpliterator
static IntSpliterator
asSpliteratorFromSortedUnknownSize(IntIterator iter, int additionalCharacterisitcs, IntComparator comparator)
Wrap a typespecific, sortedIterator
of an unknown size as a typespecificSpliterator
static IntSpliterator
asSpliteratorUnknownSize(IntIterator iter, int characterisitcs)
Wrap a typespecificIterator
of an unknown size as a typespecificSpliterator
static IntSpliterator
concat(IntSpliterator... a)
Concatenates all spliterators contained in an array.static IntSpliterator
concat(IntSpliterator[] a, int offset, int length)
Concatenates a sequence of spliterators contained in an array.static IntSpliterator
fromTo(int from, int to)
Creates a typespecific spliterator over an interval.static void
onEachMatching(IntSpliterator spliterator, java.util.function.IntPredicate predicate, java.util.function.IntConsumer action)
Perform the givenaction
on each element that matches the givenpredicate
.static IntSpliterator
singleton(int element)
Returns a spliterator that iterates just over the given element.static IntSpliterator
singleton(int element, IntComparator comparator)
Returns a spliterator that iterates just over the given element.static IntSpliterator
wrap(int[] array)
Wraps the given array into a typespecific spliterator.static IntSpliterator
wrap(int[] array, int offset, int length)
Wraps the given part of an array into a typespecific spliterator.static IntSpliterator
wrap(int[] array, int offset, int length, int additionalCharacteristics)
Wraps the given part of an array into a typespecific spliterator.static IntSpliterator
wrap(ByteSpliterator spliterator)
Returns a spliterator backed by the specified byte spliterator.static IntSpliterator
wrap(CharSpliterator spliterator)
Returns a spliterator backed by the specified char spliterator.static IntSpliterator
wrap(ShortSpliterator spliterator)
Returns a spliterator backed by the specified short spliterator.static IntSpliterator
wrapPreSorted(int[] array, int offset, int length, int additionalCharacteristics, IntComparator comparator)
Wraps the given part of a sorted array into a typespecific spliterator.static IntSpliterator
wrapPreSorted(int[] array, int offset, int length, IntComparator comparator)
Wraps the given part of a sorted array into a typespecific spliterator.static IntSpliterator
wrapPreSorted(int[] array, IntComparator comparator)
Wraps the given sorted array into a typespecific spliterator.Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

COLLECTION_SPLITERATOR_CHARACTERISTICS
public static final int COLLECTION_SPLITERATOR_CHARACTERISTICS See Also:
 Constant Field Values

LIST_SPLITERATOR_CHARACTERISTICS
public static final int LIST_SPLITERATOR_CHARACTERISTICS See Also:
 Constant Field Values

SET_SPLITERATOR_CHARACTERISTICS
public static final int SET_SPLITERATOR_CHARACTERISTICS See Also:
 Constant Field Values

SORTED_SET_SPLITERATOR_CHARACTERISTICS
public static final int SORTED_SET_SPLITERATOR_CHARACTERISTICS See Also:
 Constant Field Values

EMPTY_SPLITERATOR
An empty spliterator. It is serializable and cloneable.The class of this objects represent an abstract empty spliterator that can iterate as a typespecific spliterator.


Method Details

singleton
Returns a spliterator that iterates just over the given element. Parameters:
element
 the only element to be returned by a typespecific spliterator. Returns:
 a spliterator that iterates just over
element
.

singleton
Returns a spliterator that iterates just over the given element.The
Spliterator.getComparator()
method will return the given comparator. This is within spec because sequences of size 1 are trivially sorted for any comparison function. Parameters:
element
 the only element to be returned by a typespecific spliterator.comparator
 the comparator to return whenSpliterator.getComparator()
is called. Returns:
 a spliterator that iterates just over
element
.

wrap
Wraps the given part of an array into a typespecific spliterator.The typespecific spliterator returned by this method will iterate
length
times, advancing over consecutive elements of the given array starting from the one with indexoffset
.The returned spliterator will report characteristics
Spliterator.SIZED
,Spliterator.SUBSIZED
,Spliterator.ORDERED
, and for primitive arrays,Spliterator.NONNULL
. Parameters:
array
 an array to wrap into a typespecific spliterator.offset
 the first element of the array to be returned.length
 the number of elements to return. Returns:
 a spliterator that will iterate over
length
elements ofarray
starting at positionoffset
.

wrap
Wraps the given array into a typespecific spliterator.The typespecific spliterator returned by this method will advance over all elements of the given array.
The returned spliterator will report characteristics
Spliterator.SIZED
,Spliterator.SUBSIZED
,Spliterator.ORDERED
, and for primitive arrays,Spliterator.NONNULL
. Parameters:
array
 an array to wrap into a typespecific spliterator. Returns:
 a spliterator that will iterate over the elements of
array
.

wrap
public static IntSpliterator wrap(int[] array, int offset, int length, int additionalCharacteristics)Wraps the given part of an array into a typespecific spliterator.The typespecific spliterator returned by this method will iterate
length
times, advancing over consecutive elements of the given array starting from the one with indexoffset
.The returned spliterator will report characteristics
Spliterator.SIZED
,Spliterator.SUBSIZED
,Spliterator.ORDERED
, and for primitive arrays,Spliterator.NONNULL
, on top of any additional characteristics given inadditionalCharacteristics
(for example, if the caller knows the backing array has distinct elements, they can passSpliterator.DISTINCT
). Parameters:
array
 an array to wrap into a typespecific spliterator.offset
 the first element of the array to be returned.length
 the number of elements to return.additionalCharacteristics
 any additional characteristics to report. Returns:
 a spliterator that will iterate over
length
elements ofarray
starting at positionoffset
.

wrapPreSorted
public static IntSpliterator wrapPreSorted(int[] array, int offset, int length, int additionalCharacteristics, IntComparator comparator)Wraps the given part of a sorted array into a typespecific spliterator.It is the caller's responsibility to ensure the array is actually sorted using the comparator given.
The typespecific spliterator returned by this method will iterate
length
times, advancing over consecutive elements of the given array starting from the one with indexoffset
.The returned spliterator will report characteristics
Spliterator.SIZED
,Spliterator.SUBSIZED
,Spliterator.ORDERED
,Spliterator.SORTED
, and for primitive arrays,Spliterator.NONNULL
, on top of any additional characteristics given inadditionalCharacteristics
(for example, if the caller knows the backing array has distinct elements, they can passSpliterator.DISTINCT
). Parameters:
array
 an array to wrap into a typespecific spliterator.offset
 the first element of the array to be returned.length
 the number of elements to return.additionalCharacteristics
 any additional characteristics to report.comparator
 the comparator the array was sorted with (ornull
for natural ordering) Returns:
 a spliterator that will iterate over
length
elements ofarray
starting at positionoffset
.

wrapPreSorted
public static IntSpliterator wrapPreSorted(int[] array, int offset, int length, IntComparator comparator)Wraps the given part of a sorted array into a typespecific spliterator.It is the caller's responsibility to ensure the array is actually sorted using the comparator given.
The typespecific spliterator returned by this method will iterate
length
times, advancing over consecutive elements of the given array starting from the one with indexoffset
.The returned spliterator will report characteristics
Spliterator.SIZED
,Spliterator.SUBSIZED
,Spliterator.ORDERED
,Spliterator.SORTED
, and for primitive arrays,Spliterator.NONNULL
. Parameters:
array
 an array to wrap into a typespecific spliterator.offset
 the first element of the array to be returned.length
 the number of elements to return.comparator
 the comparator the array was sorted with (ornull
for natural ordering) Returns:
 a spliterator that will iterate over
length
elements ofarray
starting at positionoffset
.

wrapPreSorted
Wraps the given sorted array into a typespecific spliterator.It is the caller's responsibility to ensure the array is actually sorted using the comparator given.
The typespecific spliterator returned by this method will advance over all elements of the given array.
The returned spliterator will report characteristics
Spliterator.SIZED
,Spliterator.SUBSIZED
,Spliterator.ORDERED
,Spliterator.SORTED
, and for primitive arrays,Spliterator.NONNULL
. Parameters:
array
 an array to wrap into a typespecific spliterator.comparator
 the comparator the array was sorted with (ornull
for natural ordering) Returns:
 a spliterator that will iterate over
length
elements ofarray
starting at positionoffset
.

asIntSpliterator
Wraps a standard spliterator into a typespecific spliterator.This method wraps a standard spliterator into a typespecific one which will handle the type conversions for you. Of course, any attempt to wrap a spliterator returning the instances of the wrong class will generate a
ClassCastException
. The returned spliterator is backed byi
: changes to one of the spliterators will affect the other, too.If
i
is already typespecific, it will returned and no new object will be generated. Parameters:
i
 a spliterator. Returns:
 a typespecific spliterator backed by
i
.

asIntSpliterator
public static IntSpliterator asIntSpliterator(java.util.Spliterator i, IntComparator comparatorOverride)Wraps a standard spliterator into a typespecific spliterator.This method wraps a standard spliterator into a typespecific one which will handle the type conversions for you. Of course, any attempt to wrap a spliterator returning the instances of the wrong class will generate a
ClassCastException
. The returned spliterator is backed byi
: changes to one of the spliterators will affect the other, too.This method will cause the returned spliterator's
Spliterator.getComparator()
method to always returncomparatorOverride
, regardless of what the wrapped spliterator'sgetComparator()
method returns.NOTE:This is mostly intended for supporting default implementations in interfaces that wrap JDK spliterators, and not a general purpose method.
If
i
is already typespecific, this method will throw, as such spliterators already have agetComparator()
that returns a properly typed comparator. Parameters:
i
 a spliterator.comparatorOverride
 the comparator to return whenSpliterator.getComparator()
 Returns:
 a typespecific spliterator backed by
i
.

onEachMatching
public static void onEachMatching(IntSpliterator spliterator, java.util.function.IntPredicate predicate, java.util.function.IntConsumer action)Perform the givenaction
on each element that matches the givenpredicate
.This is equivalent to
java.util.stream.StreamSupport.stream(spliterator).filter(predicate).forEach(action)
(substitute the proper primitive stream as needed), except it may perform better (but no potential for parallelism). 
fromTo
Creates a typespecific spliterator over an interval.The typespecific spliterator returned by this method will return the elements
from
,from+1
,…,to1
. Parameters:
from
 the starting element (inclusive).to
 the ending element (exclusive). Returns:
 a typespecific spliterator enumerating the elements from
from
toto
.

concat
Concatenates all spliterators contained in an array.This method returns a spliterator that will enumerate in order the elements returned by all spliterators contained in the given array.
Note: Due to there being no way to ensure the
Comparator
is consistent between each inner spliterator, the returned spliterator'sSpliterator.getComparator()
will always throwIllegalStateException
, even when if the current or even all the inner spliterators are sorted. Parameters:
a
 an array of spliterators. Returns:
 a spliterator obtained by concatenation.

concat
Concatenates a sequence of spliterators contained in an array.This method returns a spliterator that will enumerate in order the elements returned by
a[offset]
, then those returned bya[offset + 1]
, and so on up toa[offset + length  1]
.Note: Due to there being no way to ensure the
Comparator
is consistent between each inner spliterator, the returned spliterator'sSpliterator.getComparator()
will always throwIllegalStateException
, even when if the current or even all the inner spliterators are sorted. Parameters:
a
 an array of spliterators.offset
 the index of the first spliterator to concatenate.length
 the number of spliterators to concatenate. Returns:
 a spliterator obtained by concatenation of
length
elements ofa
starting atoffset
.

asSpliterator
public static IntSpliterator asSpliterator(IntIterator iter, long size, int additionalCharacterisitcs)Wrap a typespecificIterator
of a known size as a typespecificSpliterator
The returned spliterator will report
characteristics
additionalCharacterisitcs
, and for primitive types,Spliterator.NONNULL
. It will also reportSpliterator.SIZED
,Spliterator.SUBSIZED
, unlessSpliterator.CONCURRENT
is to be reported, in which case these two are not implicitly reported.Because
Iterator
is an inherently linear API, the returned spliterator will yield limited performance gains when run in parallel contexts, as the returned spliterator'sSpliterator.trySplit()
will have linear runtime. Parameters:
iter
 the typespecificIterator
to wrapsize
 the number of elements the iterator will returnadditionalCharacterisitcs
 any additional characteristics to report Returns:
 a typespecific
Spliterator
that will give the same elements the iterator will return.  See Also:
Spliterators.spliterator(java.util.Iterator, long, int)

asSpliteratorFromSorted
public static IntSpliterator asSpliteratorFromSorted(IntIterator iter, long size, int additionalCharacterisitcs, IntComparator comparator)Wrap a typespecific, sortedIterator
of a known size as a typespecificSpliterator
It is the caller's responsibility to ensure the iterator's order is actually sorted according to the comparator given.
The returned spliterator will report
characteristics
additionalCharacterisitcs
,Spliterator.ORDERED
,Spliterator.SORTED
, and for primitive types,Spliterator.NONNULL
. It will also reportSpliterator.SIZED
,Spliterator.SUBSIZED
, unlessSpliterator.CONCURRENT
is to be reported, in which case these two are not implicitly reported.Because
Iterator
is an inherently linear API, the returned spliterator will yield limited performance gains when run in parallel contexts, as the returned spliterator'sSpliterator.trySplit()
will have linear runtime. Parameters:
iter
 the typespecificIterator
to wrapsize
 the number of elements the iterator will returnadditionalCharacterisitcs
 any additional characteristics to reportcomparator
 the comparator the iterator is ordered on (ornull
for natural ordering) Returns:
 a typespecific
Spliterator
that will give the same elements the iterator will return.

asSpliteratorUnknownSize
Wrap a typespecificIterator
of an unknown size as a typespecificSpliterator
The returned spliterator will report
additionalCharacterisitcs
, and for primitive types,Spliterator.NONNULL
.Because
Iterator
is an inherently linear API, the returned spliterator will yield limited performance gains when run in parallel contexts, as the returned spliterator'sSpliterator.trySplit()
will have linear runtime. Parameters:
iter
 the typespecificIterator
to wrapcharacterisitcs
 the characteristics to report Returns:
 a typespecific
Spliterator
that will give the same elements the iterator will return.  See Also:
Spliterators.spliteratorUnknownSize(java.util.Iterator, int)

asSpliteratorFromSortedUnknownSize
public static IntSpliterator asSpliteratorFromSortedUnknownSize(IntIterator iter, int additionalCharacterisitcs, IntComparator comparator)Wrap a typespecific, sortedIterator
of an unknown size as a typespecificSpliterator
It is the caller's responsibility to ensure the iterator's order is actually sorted according to the comparator given.
The returned spliterator will report
characteristics
additionalCharacterisitcs
,Spliterator.ORDERED
,Spliterator.SORTED
, and for primitive types,Spliterator.NONNULL
.Because
Iterator
is an inherently linear API, the returned spliterator will yield limited performance gains when run in parallel contexts, as the returned spliterator'sSpliterator.trySplit()
will have linear runtime. Parameters:
iter
 the typespecificIterator
to wrapadditionalCharacterisitcs
 the characteristics to reportcomparator
 the comparator the iterator is ordered on (ornull
for natural ordering) Returns:
 a typespecific
Spliterator
that will give the same elements the iterator will return.

asIterator
Wrap a typespecificSpliterator
as a typespecificIterator
 Parameters:
spliterator
 the typespecificSpliterator
to wrap Returns:
 a typespecific
Iterator
that will return the same elements the spliterator will give.  See Also:
Spliterators.iterator(java.util.Spliterator)

wrap
Returns a spliterator backed by the specified byte spliterator.Note: Due to the incompatibility of primitive
Comparator
types, the returned spliterator'sSpliterator.getComparator()
will always throwIllegalStateException
, even when the underlying spliterator is sorted. Parameters:
spliterator
 a byte spliterator. Returns:
 a spliterator backed by the specified byte spliterator.

wrap
Returns a spliterator backed by the specified short spliterator.Note: Due to the incompatibility of primitive
Comparator
types, the returned spliterator'sSpliterator.getComparator()
will always throwIllegalStateException
, even when the underlying spliterator is sorted. Parameters:
spliterator
 a short spliterator. Returns:
 a spliterator backed by the specified short spliterator.

wrap
Returns a spliterator backed by the specified char spliterator.WARNING: This is not the same as converting the source to a sequence of code points. This returned instance literally performs
(int)(charValue)
casts. Surrogate pairs will be left as separate elements instead of combined into a single element with the code point it represents.Note: Due to the incompatibility of primitive
Comparator
types, the returned spliterator'sSpliterator.getComparator()
will always throwIllegalStateException
, even when the underlying spliterator is sorted. Parameters:
spliterator
 a char spliterator. Returns:
 a spliterator backed by the specified char spliterator.
