Kotlinのコレクション操作にラムダ式を活用する方法を解説!初心者でも理解できる使い方の基本
生徒
「Kotlinでリストの中身を操作したり並び替えたりする方法ってありますか?」
先生
「Kotlinでは『コレクション操作』という考え方を使います。そして、そこで『ラムダ式』がとても役に立つんですよ。」
生徒
「ラムダ式って名前は聞いたことがあるけど、実はよく分かってません…」
先生
「心配いりません。これから、Kotlinのリストやマップなどのコレクションをラムダ式でかんたんに操作する方法を、一つひとつやさしく説明していきますね!」
1. コレクションとは?リストやマップのこと
「コレクション」は、複数の値をひとまとめにする入れ物の総称です。Kotlinでは代表的にリスト(List)とマップ(Map)をよく使います。リストは順番付きの並び、マップは「キー→値」の対応表と考えるとイメージしやすいです。
listOfは読み取り専用、mutableListOfは追加や削除ができます。
fun main() {
val fruits = listOf("apple", "banana", "cherry") // 変更しないリスト
println(fruits[0]) // インデックスで取り出す → apple
val numbers = mutableListOf(1, 2, 3) // 変更できるリスト
numbers.add(4) // 要素を追加
println(numbers) // → [1, 2, 3, 4]
}
mapOfは読み取り専用、mutableMapOfは後から値を入れ替えられます。
fun main() {
val scores = mapOf("国語" to 90, "数学" to 80) // 変更しないマップ
println(scores["国語"]) // キーで取り出す → 90
val price = mutableMapOf("apple" to 120)
price["banana"] = 150 // キーを追加
println(price) // → {apple=120, banana=150}
}
まずは「リスト=順番で取り出す」「マップ=名前(キー)で取り出す」を押さえれば十分です。このあと登場するラムダ式と組み合わせると、並び替えや絞り込みなどの操作がぐっと書きやすくなります。
2. ラムダ式とは?その場で使える小さな関数
ラムダ式(無名関数)は、その場でサッと書ける小さな関数のことです。関数名を用意せず、{ 引数 -> 処理 }という形で書きます。まずは「数字を2倍にする」最小例から見てみましょう。
左で受け取り、右で処理して結果を返します。型は書かなくても推論されます。
fun main() {
val double = { x: Int -> x * 2 } // x を2倍にして返す
println(double(5)) // → 10
}
10
「->」は「x を受け取って、右側を実行する」という合図だと考えると分かりやすいです。
1つの引数ならitという省略名が使えます。引数が無い・複数ある場合も形だけ覚えればOK。
fun main() {
// 1) it を使う(引数が1つのとき)
val triple = { it: Int -> it * 3 }
println(triple(4)) // → 12
// 2) 引数なし(現在時刻など、その場で計算して返す)
val hello = { "Hello" }
println(hello()) // → Hello
// 3) 引数が2つ
val add = { a: Int, b: Int -> a + b }
println(add(2, 3)) // → 5
}
12
Hello
5
迷ったら「{ 引数 -> やりたい処理 }」。短い処理をコンパクトに書けるのが、ラムダ式のいちばんの魅力です。
ラムダ式は、変換・並び替え・絞り込みのような場面で威力を発揮します。まずは上の形を手に慣らしておくと、次の章からのコレクション操作もスムーズに読めるようになります。
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」という意味です。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
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は読みやすさも大事にされている言語なので、柔軟に書けるのが魅力なんですよ。」
生徒
「これからは、自分のアプリでもラムダ式を使ってコレクションをもっと効率よく操作してみたいです!」