Kotlinのコレクション操作にラムダ式を活用する方法を解説!初心者でも理解できる使い方の基本
生徒
「Kotlinでリストの中身を操作したり並び替えたりする方法ってありますか?」
先生
「Kotlinでは『コレクション操作』という考え方を使います。そして、そこで『ラムダ式』がとても役に立つんですよ。」
生徒
「ラムダ式って名前は聞いたことがあるけど、実はよく分かってません…」
先生
「心配いりません。これから、Kotlinのリストやマップなどのコレクションをラムダ式でかんたんに操作する方法を、一つひとつやさしく説明していきますね!」
1. コレクションとは?リストやマップのこと
Kotlinで「コレクション」とは、複数のデータをまとめて扱う仕組みのことです。たとえば、listOfで作るリストや、mapOfで作るマップなどがあります。
リストは「数字や文字を順番に並べたもの」、マップは「キーワードと値をセットにしたもの」と考えるとわかりやすいです。
2. ラムダ式とは?その場で使える小さな関数
ラムダ式(ラムダ関数)は、名前のない関数です。必要な場面でサッと書けて、短くて読みやすいのが特徴です。
たとえば、数字を2倍にする処理をラムダ式で書くと、こうなります。
val double = { x: Int -> x * 2 }
println(double(5)) // 結果は10
このような短い処理を、リストの操作などに組み込むととても便利です。
3. filterを使って条件に合う要素を取り出す
ラムダ式を使えば、リストから特定の条件を満たすものだけを取り出すことができます。たとえば「偶数だけを取り出したい」ときはfilterを使います。
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evens = numbers.filter { it % 2 == 0 }
println(evens)
itは「リストの中の1つずつの要素」のことです。it % 2 == 0は、「偶数なら true」という意味です。
4. mapを使って要素を変換する
map関数を使うと、リストのすべての要素に同じ処理をして、新しいリストを作ることができます。
val prices = listOf(100, 200, 300)
val withTax = prices.map { it * 1.1 }
println(withTax)
ここでは、すべての金額に10%の税金を加えています。
5. sortedByで並び替える
sortedByは、リストを特定のルールで並び替えるときに使います。たとえば、文字の長さで並び替えるときは次のように書きます。
val names = listOf("Ken", "Satoshi", "Ai")
val sorted = names.sortedBy { it.length }
println(sorted)
it.lengthで「名前の文字数」を基準に並び替えています。
6. forEachで要素を1つずつ処理する
forEachは、リストの中身を順番に取り出して、1つずつ処理するときに使います。
val fruits = listOf("apple", "banana", "cherry")
fruits.forEach { println("好きな果物は $it です") }
このコードは、リストの中身を1つずつ画面に表示しています。
7. コレクション操作とラムダ式を組み合わせて使うポイント
filterは「条件に合うものだけ選ぶ」mapは「全部に同じ変換をする」sortedByは「並び順を指定する」forEachは「1つずつ処理をする」
すべての操作で、ラムダ式を使って「どのように処理するか」を指定します。慣れてくると、短くて読みやすいコードがどんどん書けるようになります。
8. 初心者におすすめの書き方のコツ
はじめのうちは、ラムダ式の中でitを使うと何を指しているか分かりづらくなることがあります。そのときは、itを明示的に名前をつけて書くと分かりやすくなります。
val numbers = listOf(1, 2, 3, 4)
val doubled = numbers.map { number -> number * 2 }
こうすれば、「これはnumberという値を2倍してるんだな」とすぐに分かります。
まとめ
Kotlinのコレクション操作とラムダ式の組み合わせは、初心者にとっては最初こそ難しそうに見えるかもしれませんが、実際に使ってみるとその便利さと表現力の高さに驚くはずです。この記事では、Kotlinの代表的なコレクションであるリストとマップを対象に、filter・map・sortedBy・forEachといった代表的な関数の使い方を学びました。
コレクションとは、データの集まりをまとめて扱うための仕組みで、特にアプリ開発やデータ処理において頻繁に利用されます。そこに「ラムダ式」という、柔軟で直感的に記述できる無名関数を組み合わせることで、コードを簡潔に、そして読みやすく保つことができます。
filterは条件に合う要素を取り出すときに、mapはすべての要素を変換するときに、sortedByは並び替え、forEachは繰り返し処理に使います。これらはどれも高階関数であり、ラムダ式を渡して処理を定義する形になっています。
特に初心者にとっては、「it」が何を意味しているのかが混乱の原因になることがありますが、itの代わりに名前付きの引数を使うことで可読性が大きく向上します。Kotlinではこうした柔軟な記述ができるため、開発現場でも非常に重宝される書き方です。
実用的なコレクション操作の組み合わせ例
ここでは、filterとmapを組み合わせた実践的なコード例を紹介します。
val scores = listOf(45, 82, 67, 90, 53)
val passed = scores.filter { it >= 60 }.map { "$it 点 合格" }
passed.forEach { println(it) }
このコードでは、「60点以上のスコアのみを抽出して、合格メッセージとして変換」する処理をラムダ式で実現しています。filterで条件を指定し、mapで要素の中身を変換し、forEachで表示するという、一連の流れがとても自然で理解しやすくなっています。
生徒
「Kotlinのラムダ式、最初はむずかしそうだったけど、コレクションの操作で使うと本当に便利なんですね!」
先生
「そうですね。特にfilterやmapは、よく使う基本的な関数なので、ぜひ慣れておいてください。」
生徒
「itがよくわからなかったけど、名前をつけて書くと分かりやすくなりました!」
先生
「それは素晴らしい気づきです。Kotlinは読みやすさも大事にされている言語なので、柔軟に書けるのが魅力なんですよ。」
生徒
「これからは、自分のアプリでもラムダ式を使ってコレクションをもっと効率よく操作してみたいです!」