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)
