⛄️
Streamのメソッドを操作の種類別で一覧にした
Stream
の操作は 中間操作 と 終端操作 がありますが、各メソッドがどちらの操作にあたるのか一覧にしてみました。
ちなみに一覧中の 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()
短絡終端操作
- boolean anyMatch(Predicate<? super T> predicate)
- boolean allMatch(Predicate<? super T> predicate)
- boolean noneMatch(Predicate<? super T> predicate)
- Optional<T> findFirst()
- Optional<T> findAny()
Discussion