Class HeadTailSpliterator<T,​U>

    • Nested Class Summary

      • Nested classes/interfaces inherited from interface java.util.Spliterator

        java.util.Spliterator.OfDouble, java.util.Spliterator.OfInt, java.util.Spliterator.OfLong, java.util.Spliterator.OfPrimitive<T extends java.lang.Object,​T_CONS extends java.lang.Object,​T_SPLITR extends java.util.Spliterator.OfPrimitive<T,​T_CONS,​T_SPLITR>>
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) StreamContext context  
      private java.util.function.Supplier<? extends java.util.stream.Stream<U>> emptyMapper  
      private java.util.function.BiFunction<? super T,​? super StreamEx<T>,​? extends java.util.stream.Stream<U>> mapper  
      private java.util.Spliterator<T> source  
      private java.util.Spliterator<U> target  
      • Fields inherited from interface java.util.Spliterator

        CONCURRENT, DISTINCT, IMMUTABLE, NONNULL, ORDERED, SIZED, SORTED, SUBSIZED
    • Constructor Summary

      Constructors 
      Constructor Description
      HeadTailSpliterator​(java.util.Spliterator<T> source, java.util.function.BiFunction<? super T,​? super StreamEx<T>,​? extends java.util.stream.Stream<U>> mapper, java.util.function.Supplier<? extends java.util.stream.Stream<U>> emptyMapper)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      long estimateSize()  
      java.util.Spliterator<U> forEachOrTail​(java.util.function.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.
      void forEachRemaining​(java.util.function.Consumer<? super U> action)  
      private boolean init()  
      boolean tryAdvance​(java.util.function.Consumer<? super U> action)  
      java.util.Spliterator<U> tryAdvanceOrTail​(java.util.function.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 java.util.Spliterators.AbstractSpliterator

        characteristics, trySplit
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.Spliterator

        characteristics, getComparator, getExactSizeIfKnown, hasCharacteristics, trySplit
    • Field Detail

      • source

        private java.util.Spliterator<T> source
      • mapper

        private java.util.function.BiFunction<? super T,​? super StreamEx<T>,​? extends java.util.stream.Stream<U>> mapper
      • emptyMapper

        private java.util.function.Supplier<? extends java.util.stream.Stream<U>> emptyMapper
      • target

        private java.util.Spliterator<U> target
    • Constructor Detail

      • HeadTailSpliterator

        HeadTailSpliterator​(java.util.Spliterator<T> source,
                            java.util.function.BiFunction<? super T,​? super StreamEx<T>,​? extends java.util.stream.Stream<U>> mapper,
                            java.util.function.Supplier<? extends java.util.stream.Stream<U>> emptyMapper)
    • Method Detail

      • tryAdvance

        public boolean tryAdvance​(java.util.function.Consumer<? super U> action)
        Specified by:
        tryAdvance in interface java.util.Spliterator<T>
      • tryAdvanceOrTail

        public java.util.Spliterator<U> tryAdvanceOrTail​(java.util.function.Consumer<? super U> action)
        Description copied from interface: Internals.TailSpliterator
        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.
        Specified by:
        tryAdvanceOrTail in interface Internals.TailSpliterator<T>
        Parameters:
        action - to feed the next element into
        Returns:
        tail spliterator, this or null
      • forEachRemaining

        public void forEachRemaining​(java.util.function.Consumer<? super U> action)
        Specified by:
        forEachRemaining in interface java.util.Spliterator<T>
      • forEachOrTail

        public java.util.Spliterator<U> forEachOrTail​(java.util.function.Consumer<? super U> action)
        Description copied from interface: Internals.TailSpliterator
        Traverses this spliterator and returns null if traversal is completed or tail spliterator if it must be used for further traversal.
        Specified by:
        forEachOrTail in interface Internals.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:
        estimateSize in interface java.util.Spliterator<T>
        Overrides:
        estimateSize in class java.util.Spliterators.AbstractSpliterator<U>