Java 8 Lambda式の異なる表現

4081 ワード

更新されたjava 8で最も注目されているのはLambda式ですが、ここではLambda式のいくつかの表現形式を簡単に紹介します
1.標準表現
String[] arr = {"program", "creek", "is", "a", "java", "site"};
Arrays.sort(arr, (String m, String n) -> Integer.compare(m.length(), n.length()));
System.out.println(Arrays.toString(arr));

ここでは主に3つの部分から構成されています:1)パラメータmとn,使用,分離2)->3)1つの式または文ブロックからなる1つのボディ
2.パラメータタイプ推定可能形式
String[] arr = { "program", "creek", "is", "a", "java", "site" };
Arrays.sort(arr, (m, n) -> Integer.compare(m.length(), n.length()));
System.out.println(Arrays.toString(arr));

コンテキストからパラメータタイプを推定できる場合は、式ではパラメータタイプを省略できます.
3.複数行で表されるLambda式
String[] arr = { "program", "creek", "is", "a", "java", "site" };
Arrays.sort(arr, (String m, String n) -> {
    if (m.length() > n.length())
        return -1;
    else
        return 0;
});
System.out.println(Arrays.toString(arr));

コードが1行に書き込めない場合は、{}を使用して複数行のコードを含めることができます.この場合、{}に含まれるコードには表示される戻り値があるはずです.
Output: [program, creek, java, site, is, a]
4.単一パラメータLambda式
String[] arr = { "program", "creek", "is", "a", "java", "site" };
Stream stream = Stream.of(arr);
stream.forEach(x -> System.out.println(x));

ここではJava 8のストリームプログラミングを利用しています.タイプを推定できる場合は、lambda式のパラメータカッコを省略して、単一パラメータを直接使用できます.
5.メソッド参照
Stream stream = Stream.of(arr);
stream.forEach(System.out::println);

4の式は、この方法の参照形式にも書くことができます.
6.パラメータなしLambda式
() -> {for(int i=0; i<10; i++) doSomthing();}