Class HeadTailSpliterator<T,U>
java.lang.Object
java.util.Spliterators.AbstractSpliterator<U>
one.util.streamex.HeadTailSpliterator<T,U>
- All Implemented Interfaces:
Spliterator<U>, Internals.TailSpliterator<U>
final class HeadTailSpliterator<T,U>
extends Spliterators.AbstractSpliterator<U>
implements Internals.TailSpliterator<U>
-
Nested Class Summary
Nested classes/interfaces inherited from interface Spliterator
Spliterator.OfDouble, Spliterator.OfInt, Spliterator.OfLong, Spliterator.OfPrimitive<T,T_CONS, T_SPLITR> -
Field Summary
FieldsModifier and TypeFieldDescription(package private) StreamContextprivate Spliterator<T> private Spliterator<U> Fields inherited from interface Spliterator
CONCURRENT, DISTINCT, IMMUTABLE, NONNULL, ORDERED, SIZED, SORTED, SUBSIZED -
Constructor Summary
ConstructorsConstructorDescriptionHeadTailSpliterator(Spliterator<T> source, BiFunction<? super T, ? super StreamEx<T>, ? extends Stream<U>> mapper, Supplier<? extends Stream<U>> emptyMapper) -
Method Summary
Modifier and TypeMethodDescriptionlongforEachOrTail(Consumer<? super U> action) Traverses this spliterator and returns null if traversal is completed or tail spliterator if it must be used for further traversal.voidforEachRemaining(Consumer<? super U> action) private booleaninit()booleantryAdvance(Consumer<? super U> action) tryAdvanceOrTail(Consumer<? super U> action) Either advances by one element feeding it to consumer and returns this or returns tail spliterator (this spliterator becomes invalid and tail must be used instead) or returns null if traversal finished.Methods inherited from class Spliterators.AbstractSpliterator
characteristics, trySplitMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Spliterator
characteristics, getComparator, getExactSizeIfKnown, hasCharacteristics, trySplit
-
Field Details
-
source
-
mapper
-
emptyMapper
-
target
-
context
StreamContext context
-
-
Constructor Details
-
HeadTailSpliterator
-
-
Method Details
-
tryAdvance
- Specified by:
tryAdvancein interfaceSpliterator<T>
-
tryAdvanceOrTail
Description copied from interface:Internals.TailSpliteratorEither advances by one element feeding it to consumer and returns this or returns tail spliterator (this spliterator becomes invalid and tail must be used instead) or returns null if traversal finished.- Specified by:
tryAdvanceOrTailin interfaceInternals.TailSpliterator<T>- Parameters:
action- to feed the next element into- Returns:
- tail spliterator, this or null
-
forEachRemaining
- Specified by:
forEachRemainingin interfaceSpliterator<T>
-
forEachOrTail
Description copied from interface:Internals.TailSpliteratorTraverses this spliterator and returns null if traversal is completed or tail spliterator if it must be used for further traversal.- Specified by:
forEachOrTailin interfaceInternals.TailSpliterator<T>- Parameters:
action- to feed the elements into- Returns:
- tail spliterator or null (never returns this)
-
init
private boolean init() -
estimateSize
public long estimateSize()- Specified by:
estimateSizein interfaceSpliterator<T>- Overrides:
estimateSizein classSpliterators.AbstractSpliterator<U>
-