この記事で分かること
- Javaラムダ式の書き方あれこれ
- ラムダ式の書式を忘れた時のリファレンス
- ラムダ式のサンプルコード
この記事では、Javaのラムダ式の書き方のバリエーションを一覧表にしています。
Javaのラムダ式の書き方を忘れてしまった時に参照できるようまとめました。
個人的に色々な言語を触っていると、Javaでの書き方をよく忘れるので自分の備忘録を兼ねて共有します。
ゴイチ
すぐ忘れるので、IDEのサポートが無かったらまともに書けません(泣
ラムダ式のバリエーション
ラムダ式は、「引数部 -> 処理部
」という形式で表す。
引数部のバリエーション
No. | 書式 | 説明 |
---|---|---|
1 | () -> {} | 基本形(引数なし) |
2 | (int n) -> {} (int m, int n) -> {} | 基本形(引数あり) |
3 | (n) -> {} (m, n) -> | 型の省略形 |
4 | n -> | 型の省略形(引数が一つの場合のみ括弧の省略可能) |
5 | (var n) -> {} (var m, var n) -> | var型形 ※Java11 から |
処理部のバリエーション
No. | 書式 | 説明 |
---|---|---|
1 | (n) -> { } | 基本形(戻り型がvoid) |
2 | (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のラムダ式は書き方に色々なパターンがある
- 引数部と処理部の書式を組み合わせてラムダ式を作る
ゴイチ
ラムダ式の書き方に迷ったらぜひこの記事を参考にして下さい!
参考サイト
- Javaラムダ式メモ(Hishidama's Java8 Lambda Expression Memo) (www.ne.jp)
- Java関数型インターフェースメモ(Hishidama's Java8 Functional Interface Memo) (www.ne.jp)
- [Java] Java8のラムダに超入門(書き方、関数型インターフェース、独自に定義、ラムダ受け取り処理) - YoheiM .NET
- Java8ラムダ式の使い方の基本 - TASK NOTES (task-notes.com)
- Java8 Lambdaまとめ - Qiita
(注)この記事はQiitaに投稿した過去の記事を再構成したものです
この記事は役に立ちましたか?
フィードバック頂けると励みになります!