Java

Java ラムダ式の書き方 一覧

この記事で分かること

  • Javaラムダ式の書き方あれこれ
  • ラムダ式の書式を忘れた時のリファレンス
  • ラムダ式のサンプルコード

この記事では、Javaのラムダ式の書き方のバリエーションを一覧表にしています。

Javaのラムダ式の書き方を忘れてしまった時に参照できるようまとめました。
個人的に色々な言語を触っていると、Javaでの書き方をよく忘れるので自分の備忘録を兼ねて共有します。

ゴイチ

すぐ忘れるので、IDEのサポートが無かったらまともに書けません(泣

ラムダ式のバリエーション

ラムダ式は、「引数部 -> 処理部」という形式で表す。

引数部のバリエーション

No.書式説明
1() -> {}基本形(引数なし)
2(int n) -> {}
(int m, int n) -> {}
基本形(引数あり)
3(n) -> {}
(m, n) -> {}
型の省略形
4n -> {}型の省略形(引数が一つの場合のみ括弧の省略可能)
5(var n) -> {}
(var m, var n) -> {}
var型形
※Java11 から
引数部のラムダ式一覧

処理部のバリエーション

No.書式説明
1(n) -> {
System.out.println(n);
}
基本形(戻り型がvoid)
2(n) -> {
System.out.println(n);
return n;
}
基本形(戻り型がvoid以外)
3(n) -> System.out.println(n)括弧の省略形(戻り型がvoid)
※returnと末尾のセミコロンは記述しない
4(n) -> n * 2括弧の省略形(戻り型がvoid以外)
※returnと末尾のセミコロンは記述しない
処理部のラムダ式一覧

上記の「引数部 -> 処理部」を組み合わせて使います。

サンプルコード

public static void lambdaNotation() throws InterruptedException {
    final Integer[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    // 基本形(引数なし)+ 基本形(戻り値がvoid)
    var t = new Thread(() -> {
        System.out.println(Arrays.asList(intArray));
    });
    t.start();
    t.join();

    // 型の省略形(引数あり)+ 括弧の省略形(戻り値がvoid以外)
    var evenList = Arrays.stream(intArray)
            .filter(n -> n % 2 == 0)
            .collect(Collectors.toList());
    System.out.println(evenList);

    // 基本形(引数2つ)+ 基本形(戻り値がvoid以外)
    var sortedList = Arrays.stream(intArray)
            .sorted((Integer m, Integer n) -> {
                return n - m; // descending order
            })
            .collect(Collectors.toList());
    System.out.println(sortedList);

    // var型形
    var powList = Arrays.stream(intArray)
            .map((var n) -> (int) Math.pow(n, 2))
            .collect(Collectors.toList());
    System.out.println(powList);
}

出力結果

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8, 10]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

まとめ

最後に、この記事の内容をまとめます。

要点まとめ

  • Javaのラムダ式は書き方に色々なパターンがある
  • 引数部と処理部の書式を組み合わせてラムダ式を作る
ゴイチ

ラムダ式の書き方に迷ったらぜひこの記事を参考にして下さい!

参考サイト

(注)この記事はQiitaに投稿した過去の記事を再構成したものです

この記事は役に立ちましたか?

  • この記事を書いた人
アバター画像

ゴイチ

ソフトウェアエンジニア歴20年。 C/C++, C#, Java, Kotlinが得意で、組込系・スマホ・大規模なWebサービスなど幅広いプログラミング経験があります。 現在は某SNSの会社でWebエンジニアをしています。

-Java
-,