LoginSignup
2
3

More than 5 years have passed since last update.

Java8のStream API逆引き

Posted at

すぐに見れる一覧が欲しかったので書きました。

Stream APIとは?

Stream APIとはJava8から追加されたイテレーションの拡張APIです。
これまでは独自で書いていたList等から特定の情報のみを抽出するなどといった複雑な処理を、簡単でわかりやすく記述できるようになりました。

中間操作と終端操作

Stream APIには操作する種別があり、それぞれ中間操作終端操作と呼ばれています。

中間操作

Streamで触りたい対象(コレクション:リスト)の中身をいい感じに変更する操作です。
中間操作には以下があります。

修飾子と型 メソッド 説明
Stream<T> distinct() このストリームの重複を除いた要素(Object.equals(Object)による)から構成されるストリームを返します。
Stream<T> filter(Predicate<? super T> predicate) このストリームの要素のうち、指定された述語に一致するものから構成されるストリームを返します。
<R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper) このストリームの各要素をマップされたストリーム(指定されたマッピング関数を各要素に適用することで得られる)の内容で置き換えた結果から成るストリームを返します。
DoubleStream flatMapToDouble(Function<? super T,? extends DoubleStream> mapper) このストリームの各要素を、その要素に指定されたマッピング関数を適用することによって生成されるマップ先ストリームの内容で置き換えた結果から構成されるDoubleStreamを返します。
IntStream flatMapToInt(Function<? super T,? extends IntStream> mapper) このストリームの各要素をマップされたストリーム(指定されたマッピング関数を各要素に適用することで得られる)の内容で置き換えた結果から成るIntStreamを返します。
LongStream flatMapToLong(Function<? super T,? extends LongStream> mapper) このストリームの各要素をマップされたストリーム(指定されたマッピング関数を各要素に適用することで得られる)の内容で置き換えた結果から成るLongStreamを返します。
Stream<T> limit(long maxSize) このストリームの要素をmaxSize以内の長さに切り詰めた結果から成るストリームを返します。
<R> Stream<R> map(Function<? super T,? extends R> mapper) このストリームの要素に指定された関数を適用した結果から構成されるストリームを返します。
DoubleStream mapToDouble(ToDoubleFunction<? super T> mapper) このストリームの要素に指定された関数を適用した結果から構成されるDoubleStreamを返します。
IntStream mapToInt(ToIntFunction<? super T> mapper) このストリームの要素に指定された関数を適用した結果から構成されるIntStreamを返します。
LongStream mapToLong(ToLongFunction<? super T> mapper) このストリームの要素に指定された関数を適用した結果から構成されるLongStreamを返します。
Stream<T> peek(Consumer<? super T> action) このストリームの要素から成るストリームを返すほか、その結果のストリームから消費される各要素に対し、指定されたアクションを実行します。
Stream<T> skip(long n) このストリームの最初のn個の要素を破棄した残りの要素で構成されるストリームを返します。
Stream<T> sorted() このストリームの要素を自然順序に従ってソートした結果から構成されるストリームを返します。
Stream<T> sorted(Comparator<? super T> comparator) このストリームの要素を指定されたComparatorに従ってソートした結果から構成されるストリームを返します。

終端操作

Stream内の情報に対して処理を実行する操作です。
終端操作には以下があります。

修飾子と型 メソッド 説明
boolean allMatch(Predicate<? super T> predicate) このストリームのすべての要素が指定された述語に一致するかどうかを返します。
boolean anyMatch(Predicate<? super T> predicate) このストリームのいずれかの要素が指定された述語に一致するかどうかを返します。
<R,A> R collect(Collector<? super T,A,R> collector) Collectorを使ってこのストリームの要素に対する可変リダクション操作を実行します。
<R> R collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner) このストリームの要素に対して可変リダクション操作を実行します。
long count() このストリームの要素の個数を返します。
Optional<T> findAny() ストリームのある要素を記述するOptionalまたは空のOptional (ストリームが空の場合)を返します。
Optional<T> findFirst() このストリームの最初の要素を記述するOptionalまたは空のOptional (ストリームが空の場合)を返します。
void forEach(Consumer<? super T> action) このストリームの各要素に対してアクションを実行します。
void forEachOrdered(Consumer<? super T> action) このストリームの各要素に対してアクションを実行します。その実行順は、ストリームの検出順が定義されている場合はその順番になります。
Optional<T> max(Comparator<? super T> comparator) 指定されたComparatorに従ってこのストリームの最大要素を返します。
Optional<T> min(Comparator<? super T> comparator) 指定されたComparatorに従ってこのストリームの最小要素を返します。
boolean noneMatch(Predicate<? super T> predicate) 指定された述語に一致する要素がこのストリーム内に存在しないかどうかを返します。
Optional<T> reduce(BinaryOperator<T> accumulator) 結合的な累積関数を使ってこのストリームの要素に対してリダクションを実行し、リデュースされた値が存在する場合はその値を記述するOptionalを返します。
T reduce(T identity, BinaryOperator<T> accumulator) 指定された単位元の値と結合的な累積関数を使ってこのストリームの要素に対してリダクションを実行し、リデュースされた値を返します。
<U> U reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner) 指定された単位元、累積関数、および結合的関数を使用して、このストリームの要素に対してリダクションを実行します。
Object[] toArray() このストリームの要素を含む配列を返します。
<A> A[] toArray(IntFunction<A[]> generator) 指定されたgenerator関数を使用して、このストリームの要素を含む配列を返し、返された配列と、パーティション化された実行またはサイズ変更に必要となる可能性のある追加の配列を割り当てます。

デフォルト・メソッド

修飾子と型 メソッド 説明
static <T> Stream.Builder<T> builder() Streamのビルダーを返します。
static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b) 最初のストリームの全要素と2番目のストリームの全要素を連結したものを要素に持つ、遅延連結ストリームを作成します。
static <T> Stream<T> empty() 空の順次Streamを返します。
static <T> Stream<T> generate(Supplier<T> s) 指定されたSupplierによって生成される要素を含む、順序付けされていない無限順次ストリームを返します。
static <T> Stream<T> iterate(T seed, UnaryOperator<T> f) 初期要素seedに関数fを繰り返し適用することで生成される、順序付けされた無限順次Streamを返します(seed、f(seed)、f(f(seed))、といった要素から成るStreamが生成される)。
static <T> Stream<T> of(T... values) 指定された値を要素に持つ、順序付けされた順次ストリームを返します。
static <T> Stream<T> of(T t) 単一要素を含む順次Streamを返します。
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3