Kotlinの可変リスト(MutableList)の使い方と活用例をやさしく解説!初心者でも今日から使える
生徒
「Kotlinのリストって、あとから追加や削除はできるんですか?」
先生
「いい質問ですね!Kotlinでは、あとから要素を追加したり削除できる『可変リスト(MutableList)』という便利な仕組みがありますよ。」
生徒
「可変リストってどうやって使うんですか?初心者でも使えますか?」
先生
「もちろん!これからゆっくりと、Kotlinの可変リストの基本の使い方から実践的な活用例まで、初心者向けにやさしく説明しますね。」
1. 可変リスト(MutableList)とは?
Kotlin(ことりん)では、リストという「データの集まり」を扱う仕組みがあります。リストとは、たとえば「リンゴ・バナナ・みかん」のように、いくつかのものをまとめたものです。
このリストには2種類あります:
- 不変リスト(List):あとから変更できない
- 可変リスト(MutableList):あとから追加・削除・変更ができる
このページでは、あとから自由に中身を変えられる可変リスト(MutableList)の使い方にしぼって解説します。
2. 可変リストを作ってみよう
まずは、Kotlinで可変リストを作る基本の書き方を見てみましょう。以下のコードは、文字のリスト(リンゴ・バナナ・みかん)を作って、あとから新しい果物を追加する例です。
fun main() {
val fruits = mutableListOf("りんご", "バナナ", "みかん")
fruits.add("ぶどう")
println(fruits)
}
このプログラムを実行すると、以下のように表示されます:
[りんご, バナナ, みかん, ぶどう]
mutableListOf()というのが、可変リストを作る関数です。そしてadd()メソッドで、あとからリストにアイテムを追加できます。
3. 可変リストのよく使う操作まとめ
可変リストは、追加だけでなく削除や変更もできます。ここでは代表的な操作を紹介します。
要素を追加する
val colors = mutableListOf("赤", "青")
colors.add("緑")
要素を削除する
colors.remove("赤")
特定の位置に追加する
colors.add(1, "黄")
特定の位置を変更する
colors[0] = "ピンク"
このように、KotlinのMutableListは、追加・削除・上書きなどがとても自由にできます。
4. for文と組み合わせて使う
可変リストを使って、順番に処理をしたいときは、for文と組み合わせることが多いです。以下は、名前のリストを1人ずつ表示する例です。
fun main() {
val names = mutableListOf("たろう", "はなこ", "じろう")
for (name in names) {
println("こんにちは、$name さん")
}
}
こんにちは、たろう さん
こんにちは、はなこ さん
こんにちは、じろう さん
リストに入っているアイテムをひとつずつ取り出して処理するとき、とても便利です。
5. 可変リストを活用した簡単なアプリ例
ここでは、買い物リストを使った簡単なミニアプリを作ってみます。ユーザーが追加したい商品をリストにどんどん追加するイメージです。
fun main() {
val shoppingList = mutableListOf<String>()
shoppingList.add("牛乳")
shoppingList.add("パン")
shoppingList.add("卵")
println("買い物リスト:")
for (item in shoppingList) {
println("- $item")
}
}
買い物リスト:
- 牛乳
- パン
- 卵
このように、実際の生活の中でも「まとめて管理したいもの」があれば、Kotlinの可変リストで整理できます。
6. 可変リストと条件分岐の組み合わせ
たとえば、特定の条件に合ったデータだけをリストに入れたいとき、if文などと組み合わせると、より実践的になります。
fun main() {
val numbers = listOf(1, 2, 3, 4, 5, 6)
val evenNumbers = mutableListOf<Int>()
for (num in numbers) {
if (num % 2 == 0) {
evenNumbers.add(num)
}
}
println("偶数だけのリスト: $evenNumbers")
}
偶数だけのリスト: [2, 4, 6]
このようにして、「必要なデータだけを抜き出して使う」ことも簡単にできます。
7. まとめて追加や削除する方法
たくさんのアイテムを一度にリストに追加したいときは、addAll()を使います。同じように、まとめて削除するときはremoveAll()を使います。
まとめて追加
val list1 = mutableListOf("A", "B")
val list2 = listOf("C", "D")
list1.addAll(list2)
println(list1)
[A, B, C, D]
まとめて削除
list1.removeAll(listOf("B", "D"))
println(list1)
[A, C]
まとめ
Kotlinの可変リスト(MutableList)は、あとから自由に追加や削除や変更ができる柔軟なデータ構造であり、日常的なデータ管理から本格的なアプリケーション開発まで幅広く活用できます。特に初心者がプログラミングを学ぶ際には、具体的なデータを扱いながら動的に変更できるリストを理解することで、変数や配列、ループ、条件分岐といった基本的な概念を効率よく習得できる重要な要素になります。今回学んだ内容を整理すると、「mutableListOf()で作れる」「addやremoveで中身を変えられる」「for文やif文と組み合わせて処理できる」「まとめて操作できる」など、実務や学習の現場で役立つ場面が多い特徴があります。 また、可変リストは単純にデータを保持するだけでなく、ユーザー入力に応じて内容が増減する買い物リストやタスク管理アプリなど、実際のアプリケーションモデルとしても利用しやすい点が魅力的です。特に、可変リストと条件分岐を組み合わせて特定条件に一致した値だけを抽出したり、必要なデータのみを別のリストに追加するなど、データ処理の基本を自然に体験しながら学ぶことができます。こうした操作はWeb開発やAndroidアプリ開発でも頻繁に登場するため、Kotlin学習者にとって基礎にして最重要ポイントといっても過言ではありません。 実際、可変リストは文字列や数値だけでなく、クラスやオブジェクトにも応用でき、設計次第でデータベースから取得した値を整形して画面表示用にまとめる処理などにも活用できます。特に複雑なデータを管理する際には、リスト操作の理解がそのまま開発効率や保守性の向上に直結します。また、mutableListOfで生成したリストを拡張関数やラムダ式と併用すれば、より表現力豊かなコードを書けるようになり、Kotlinらしい簡潔で読みやすいプログラムへと発展させられる点も覚えておくと良いでしょう。 以下では、今回学んだ内容を反映したサンプルとして、クラスを使った可変リスト管理の例を紹介します。可変リストの活用方法をさらに深めたい人は、データ型を拡張してアプリケーションに近い形で扱う練習を進めてみてください。
クラスと可変リストを組み合わせた応用例
data class Item(val name: String, var done: Boolean)
fun main() {
val todoList = mutableListOf<Item>()
todoList.add(Item("宿題", false))
todoList.add(Item("掃除", false))
todoList.add(Item("メール返信", true))
println("やることリスト:")
for (task in todoList) {
val status = if (task.done) "完了" else "未完了"
println("- ${task.name}:$status")
}
todoList.removeIf { it.done }
println("未完了だけのリスト:$todoList")
}
このサンプルでは、可変リストにデータクラスを保存し、状態に応じて絞り込みを行っています。単純な文字列データのリストよりも実践的な構造となり、実際のアプリケーション設計に近づく練習になります。Kotlinを深く学ぶためには、このように可変リストと多様な構造を柔軟に組み合わせ、用途に応じたデータ管理方法を考えていく姿勢が重要です。そのためにも、まず今回の基本操作をしっかり理解し、実際に手を動かして経験を積み重ねていきましょう。
生徒
「MutableListって、ただ追加できるだけじゃなくて、条件で抽出したりオブジェクトを入れたりもできるんですね!」
先生
「その通りです。データクラスと組み合わせることで、よりアプリっぽい構造にできますよ。」
生徒
「今まで配列しか使ってなかったけど、これならタスク管理アプリとかも作れそうです!」
先生
「まさにそのためにMutableListは便利なんです。これからは必要に応じて不変リストと使い分けましょう。」
生徒
「はい!まずは今日のコードを自分でも書いて試してみます!」