Streamのメソッドを操作の種類別で一覧にした
Stream の操作は 中間操作 と 終端操作 がありますが、 各メソッドがどちらの操作にあたるのか一覧にしてみました。
Note
中間操作と終端操作の詳細は ストリーム操作とパイプライン を参照してください。
ちなみに一覧中の T は Stream が取る型変数です。 例えば String[] をストリーム化した場合 T は String になります。
それから S は BaseStream が取る型変数で Stream<T> を指します。
中間操作
- Stream<T> filter(Predicate<? super T> predicate)
- <R> Stream<R> map(Function<? super T, ? extends R> mapper)
- IntStream mapToInt(ToIntFunction<? super T> mapper)
- LongStream mapToLong(ToLongFunction<? super T> mapper)
- DoubleStream mapToDouble(ToDoubleFunction<? super T> mapper)
- <R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)
- IntStream flatMapToInt(Function<? super T, ? extends IntStream> mapper)
- LongStream flatMapToLong(Function<? super T, ? extends LongStream> mapper)
- DoubleStream flatMapToDouble(Function<? super T, ? extends DoubleStream> mapper)
- Stream<T> peek(Consumer<? super T> action)
- S sequential()
- S parallel()
- S unordered()
- S onClose(Runnable closeHandler)
ステートフルな中間操作
ステートフルな短絡中間操作
終端操作
- void forEach(Consumer<? super T> action)
- void forEachOrdered(Consumer<? super T> action)
- Object [] toArray()
- <A> A[] toArray(IntFunction<A[]> generator)
- T reduce(T identity, BinaryOperator<T> accumulator)
- Optional<T> reduce(BinaryOperator<T> accumulator)
- <U> U reduce(U identity, BiFunction<U, ? super T, U> accumulator, BinaryOperator<U> combiner)
- <R> R collect(Supplier<R> supplier, BiConsumer<R, ? super T> accumulator, BiConsumer<R, R> combiner)
- <R, A> R collect(Collector<? super T, A, R> collector)
- Optional<T> min(Comparator<? super T> comparator)
- Optional<T> max(Comparator<? super T> comparator)
- long count()
- Iterator<T> iterator()
- Spliterator<T> spliterator()