今日の自分を支える 技術→マネジメント

技術職→管理職になりました

ラムダ式

サラッと見ては、ふーん。で毎回終わっていたラムダ式を改めて理解する。 あとから見直したら分かりにくかったので更新(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でなければエラーになる