Java 8のStream APIについての紹介です。Stream APIではラムダ式を使うのでラムダ式を合わせて説明します。
ラムダ式(Lambda)
Javaのラムダ式(Lambda)は、クロージャ(Closure)とも呼ばれています。ラムダ式は「関数型インターフェイス」の実装で使います。
|
ラムダ式を使うと上のインターフェイスを次のように書き直すことができます。
IntFunc intFunc2 = (int x) -> { return x + x; }; |
Stream API
Java 8で導入された機能で、配列やCollectionなどの集合体の値の集計などに便利なAPIです。Stream
といったインターフェイスで要素を処理します。
Stream APIには「中間操作」と「終端操作」が存在します。
中間操作を行う主なメソッドは次のようなものがあります。
😎 条件を満たす要素のみ選別:filter
filter
メソッドは、Predicate
で定義したbooleanの判定がtrueの要素のみに絞ったStreamを返します。
Integer[] array = { 1, 2, 3, 4, 5, 6, 7 }; |
上記と同じことを省略形で書くと次のようになります。
Integer[] array = { 1, 2, 3, 4, 5, 6, 7 }; |
😸 各要素に特定の処理を行う:map
map
メソッドは、各要素に対して指定した処理を行いその結果のStreamを返します。
Integer[] array = { 1, 2, 3 }; |
上記と同じことを省略形で書くと次のようになります。
Integer[] array = { 1, 2, 3 }; |
👽 指定した個数の要素を返す:limit
limit
メソッドはmaxSize個の要素のStreamを返します。
Integer[] array = { 1, 2, 3, 4, 5, 6, 7 }; |
🗽 重複のない要素を返す:distinct
distinct
メソッドはmaxSize個の要素のStreamを返します。
Integer[] array = { 1, 2, 1, 2, 1, 2 }; |
😀 指定した並び順に並べ直す:sorted
sorted
メソッドは、Comparator
で比較し並べ替えたStreamを返します。
List |
🐠 集合に対する操作:collect
collect
メソッドはArrayやList等のデータ構造を変化するのに使います。
List |
Collectorsで文字列の連結:joining
Collectorsのメソッドで文字列の連結に使うのがjoining
メソッドです。
System.out.println(Stream.of("A", "B", "C") |
🐹 ひとつでもマッチすればtrueを返す:anyMatch
anyMatch
メソッドは要素の中でどれかひとつでも条件にマッチすればtrueを返します。
List |
😼 すべて一致すればtrueを返す:allMatch
allMatch
メソッドはすべての要素が条件を満たせばtrueを返します。
List |
🎂 すべてマッチしなければtrueを返す:noneMatch
noneMatch
メソッドはすべての要素が条件を満たさない、ひとつもマッチしない場合にtrueを返します
List |
🐯 参考リンク
- 【初心者向け】Java8 Stream APIについて知ろう
- 【初心者向け】今更聞けない?Java8のラムダ式について知ろう!
- Java8のStream APIの使い方(中間操作編① - filter, map)
- Java8 Stream APIの基本(7) - 終端操作2(Stream#collect)