サラッと見ては、ふーん。で毎回終わっていたラムダ式を改めて理解する。 あとから見直したら分かりにくかったので更新(2020/5/8)
何に使うのか
Streamと一緒に使ってかっこよく書ける(ファイルIOのストリームとは別もの)。並列処理にすると処理速度もUP。
例えば、Listの内容を出力するコードを書く場合。
従来の記述方法
for(Integer i : List){
System.out.println(i);
}
Stream+ラムダ式での記述方法
list.stream().forEach( i -> System.out.println(i));
//並列処理させる場合
list.parallelStream().forEach( i -> System.out.println(i));
ラムダ式の記述方法
下記コードのXXXFuncはSAMインタフェース。
//基本的な記述方法。下記コード実行時に関数の実体が生み出される。 (int x) -> { System.out.println(x); }; //代入の右辺でラムダ式を使う場合引数の型は省略できる //(代入先の変数の型が持つ抽象メソッドから特定できるため) XXXFunc func = (x) -> { return x *2; }; //引数が1つであれば()は省略できる XXXFunc func = x -> { return x *2; }; //単一のreturn文の場合、{}やreturnを省略可能 XXXFunc func = x -> x *2; //ブロック外(ラムダ式外)の変数にアクセスできる。 int a = 0; XXXFunc func = x -> x *a; //※ただし、変数はfinalまたは事実上のfinalでなければエラーになる