< prev index next >

jdk/src/java.base/share/classes/java/util/stream/WhileOps.java

Print this page




  26 
  27 import java.util.Comparator;
  28 import java.util.Objects;
  29 import java.util.Spliterator;
  30 import java.util.concurrent.CountedCompleter;
  31 import java.util.concurrent.atomic.AtomicBoolean;
  32 import java.util.function.Consumer;
  33 import java.util.function.DoubleConsumer;
  34 import java.util.function.DoublePredicate;
  35 import java.util.function.IntConsumer;
  36 import java.util.function.IntFunction;
  37 import java.util.function.IntPredicate;
  38 import java.util.function.LongConsumer;
  39 import java.util.function.LongPredicate;
  40 import java.util.function.Predicate;
  41 
  42 /**
  43  * Factory for instances of a takeWhile and dropWhile operations
  44  * that produce subsequences of their input stream.
  45  *
  46  * @since 1.9
  47  */
  48 final class WhileOps {
  49 
  50     static final int TAKE_FLAGS = StreamOpFlag.NOT_SIZED | StreamOpFlag.IS_SHORT_CIRCUIT;
  51 
  52     static final int DROP_FLAGS = StreamOpFlag.NOT_SIZED;
  53 
  54     /**
  55      * Appends a "takeWhile" operation to the provided Stream.
  56      *
  57      * @param <T> the type of both input and output elements
  58      * @param upstream a reference stream with element type T
  59      * @param predicate the predicate that returns false to halt taking.
  60      */
  61     static <T> Stream<T> makeTakeWhileRef(AbstractPipeline<?, T, ?> upstream,
  62                                           Predicate<? super T> predicate) {
  63         Objects.requireNonNull(predicate);
  64         return new ReferencePipeline.StatefulOp<T, T>(upstream, StreamShape.REFERENCE, TAKE_FLAGS) {
  65             @Override
  66             <P_IN> Spliterator<T> opEvaluateParallelLazy(PipelineHelper<T> helper,




  26 
  27 import java.util.Comparator;
  28 import java.util.Objects;
  29 import java.util.Spliterator;
  30 import java.util.concurrent.CountedCompleter;
  31 import java.util.concurrent.atomic.AtomicBoolean;
  32 import java.util.function.Consumer;
  33 import java.util.function.DoubleConsumer;
  34 import java.util.function.DoublePredicate;
  35 import java.util.function.IntConsumer;
  36 import java.util.function.IntFunction;
  37 import java.util.function.IntPredicate;
  38 import java.util.function.LongConsumer;
  39 import java.util.function.LongPredicate;
  40 import java.util.function.Predicate;
  41 
  42 /**
  43  * Factory for instances of a takeWhile and dropWhile operations
  44  * that produce subsequences of their input stream.
  45  *
  46  * @since 9
  47  */
  48 final class WhileOps {
  49 
  50     static final int TAKE_FLAGS = StreamOpFlag.NOT_SIZED | StreamOpFlag.IS_SHORT_CIRCUIT;
  51 
  52     static final int DROP_FLAGS = StreamOpFlag.NOT_SIZED;
  53 
  54     /**
  55      * Appends a "takeWhile" operation to the provided Stream.
  56      *
  57      * @param <T> the type of both input and output elements
  58      * @param upstream a reference stream with element type T
  59      * @param predicate the predicate that returns false to halt taking.
  60      */
  61     static <T> Stream<T> makeTakeWhileRef(AbstractPipeline<?, T, ?> upstream,
  62                                           Predicate<? super T> predicate) {
  63         Objects.requireNonNull(predicate);
  64         return new ReferencePipeline.StatefulOp<T, T>(upstream, StreamShape.REFERENCE, TAKE_FLAGS) {
  65             @Override
  66             <P_IN> Spliterator<T> opEvaluateParallelLazy(PipelineHelper<T> helper,


< prev index next >