KotlinとJavaのラムダ式の違いについて、サンプルコードから学ぶ
ラムダ式とは
関数を簡潔に表現する方法の一つ
- 名前を持たないため、直接呼び出すことはできない
- その代わりに、他の関数に引数として使用される
- 以下のコードでいう
{ it % 2 == 0 }がラムダ式
- 以下のコードでいう
Kotlin
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // [2, 4]
numbersの要素から偶数のみを抽出し、evenNumbersに格納される
Kotlinのラムダ式では、itという暗黙的な変数を使用することで引数の省略が可能となっている
Java
次に、同様の処理をJavaで記載する
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // [2, 4]
Javaのラムダ式では、引数を明示的に宣言する必要があるためnを使用している
また、Streamの処理結果をCollectors.toListを使用してListに変換している
まとめ
Kotlinのラムダ式はJavaのラムダ式と比較して、簡潔で直感的に理解しやすいことが分かった