Genta Hirauchi

最終更新日:2020/02/07

【Kotlin基礎】KotlinでMutableListを使う方法を解説

  • KotlinでMutableListはどうやって使うの?
  • MutableListの便利な使用法が知りたい。
  • ListとMutableListの違いが知りたい。

このような悩みを抱えている方、いらっしゃいませんか?

Mutableは「可変な」という意味で、KotlinのMutableListは、要素の変更が可能なListのことをいいます。

本記事では、そんなMutableListの使い方を、サンプルコードを交え、わかりやすく解説致します。

目次

KotlinでMutableListを使う方法

ListとMutableListの違いについて

ListとMutableListの違いについてですが、その違いは、リストの書き換えが可能かどうかの違いです。

冒頭でもお話したようにMutableとは「可変な」という意味で、要素の追加や削除、入れ替えなどができます。
一方Listは読み取り専用で、要素を変更することができません。

また、MutableListはListを継承しているため、基本的な使い方は2つとも同じです。

ですので、本記事では、MutableListならではの要素の追加や削除、入れ替えの方法を解説し、要素数の取得や並び替えの方法など、Listと共通の使い方については、以下の記事をご覧頂けたらと思います。

【Kotlin基礎】KotlinでListを使う方法を解説

本記事では、KotlinでListを使う方法を解説致します。Listの基本的な使い方から、Listをループさせる方法や、Listの中身の並び替えなど、実用的なものをピックアップし解説しております。

MutableListの基本的な使い方

MutableListの初期化

MutableListの初期化には、mutableListOf()関数を使用します。

  • Kotlin
val list = mutableListOf<String>("りんご", "ゴリラ", "ラッパ")

要素をカンマ(, )で区切って、要素を列挙します。

また、Kotlinでは推論が可能なので、<String>の型を明記する部分を省略することができます。

MutableListの初期化

要素を参照するには[番号]を使用する方法と、get(番号)を使用する方法の2通りがあります。

  • Kotlin
val list = mutableListOf<String>("りんご", "ゴリラ", "ラッパ")
println(list[0])
println(list.get(1))

// りんご
// ゴリラ

ここで注目していただきたいのは、”りんご”を参照するのに、0を指定している所です。

Listや配列では、番号(index)は0から始まります。ですから、最後の”ラッパ”を参照するにはlist.get(2)のように、2を指定する必要があります。
この事を忘れており、最後の要素だからと、listの要素数の3を指定してしまうとエラーとなってしまうので、注意が必要です。

【公式ドキュメント】 : mutableListOf – Kotlin Programming Language

Point
  • MutableListの初期化には、mutableListOf()関数を使用する
  • 要素の取得は、[番号]か、get(番号)を使用する
  • MutableListの番号(index)は、0から始まる

要素を追加する方法

続いて、要素を追加する方法を紹介致します。

リストの最後に要素を追加する方法

まずは、一番基本的な方法である、リストの最後に要素を追加する方法についてです。リストの最後に要素を追加するには、add(要素)を使用します。

  • Kotlin
val list = mutableListOf("リンゴ", "ゴリラ", "ラッパ")
list.add("パンダ")
for(item in list) {
   println(item)
}

// リンゴ
// ゴリラ
// ラッパ
// パンダ

すでに初期化されたlistに対し、add()で”パンダ”を追加しました。

リストの任意の位置に要素を追加する方法

続いて、リストの任意の位置に要素を追加する方法についてです。リストの任意の位置に要素を追加するには、add(番号, 要素)を使用します。

  • Kotlin
val list = mutableListOf("リンゴ", "ゴリラ", "ラッパ")
list.add(2, "パンダ")
for(item in list) {
   println(item)
}

// リンゴ
// ゴリラ
// パンダ
// ラッパ

先ほどの最後に追加する方法とは違い、番号(index)を指定することで、任意の位置に要素を追加することができます。

リストにリストを追加する方法

最後に、リストにリストを追加する方法です。リストにリストを追加するには、addAll(リスト)を使用します。

  • Kotlin
val list1 = mutableListOf("リンゴ", "ゴリラ", "ラッパ")
val list2 = listOf("ダチョウ", "ウサギ")
list1.addAll(list2)
for(item in list1) {
   println(item)
}

// リンゴ
// ゴリラ
// ラッパ
// ダチョウ
// ウサギ

先ほどの任意の場所に要素を追加する方法のように、addAll(番号, リスト)とすることで、任意の場所にリストを追加することもできます。

Point
  • リストの最後に要素を追加するには、add(要素)を使用する
  • リストの任意の位置に要素を追加するには、add(番号, 要素)を使用する
  • リストにリストを追加を追加するには、addAll(リスト)を使用

要素を削除する方法

続いて、要素を削除する方法を紹介致します。

削除する要素を指定して削除する方法

まずは、削除する要素を指定して削除する方法についてです。削除する要素を指定して削除するには、remove(要素)を使用します。

  • Kotlin
val list = mutableListOf("リンゴ", "ゴリラ", "ラッパ")
list.remove("リンゴ")
for(item in list) {
   println(item)
}

// ゴリラ
// ラッパ

指定した要素と等しい要素を削除します。等しい要素がない場合は何も削除されません。

削除する番号を指定する方法

続いて、削除する番号を指定する方法についてです。削除する番号を指定する方法するには、remove(番号)を使用します。

  • Kotlin
val list = mutableListOf("リンゴ", "ゴリラ", "ラッパ")
list.removeAt(1)
for(item in list) {
   println(item)
}

// リンゴ
// ラッパ

番号指定で削除するので、get()で要素を参照する時のように、要素が存在しない番号を指定するとエラーとなりますので、注意が必要です。

リストからリストを削除する方法

続いて、リストからリストを削除する方法についてです。リストからリストを削除するには、removeAll(リスト)を使用します。

  • Kotlin
val list1 = mutableListOf("リンゴ", "ゴリラ", "ラッパ")
val list2 = mutableListOf("リンゴ", "ラッパ")
list1.removeAll(list2)
for(item in list1) {
   println(item)
}

// ゴリラ

全ての要素を削除する方法

最後に、全ての要素を削除する方法についてです。全ての要素を削除するには、clear()を使用します。

  • Kotlin
val list = mutableListOf("リンゴ", "ゴリラ", "ラッパ")
list.clear()
for(item in list) {
   println(item)
}

// 何も出力されない
Point
  • 削除する要素を指定して削除するには、remove(要素)を使用する
  • 削除する番号を指定する方法するには、remove(番号)を使用する
  • リストからリストを削除するには、removeAll(リスト)を使用
  • 全ての要素を削除するには、clear()を使用

要素を入れ替える方法

最後に、リストの要素を入れ替える方法について紹介致します。リストの要素を入れ替えるには、set(番号, 要素)を使用します。

  • Kotlin
val list = mutableListOf("リンゴ", "ゴリラ", "ラッパ")
list.set(0, "ミカン")
for(item in list) {
   println(item)
}

// ミカン
// ゴリラ
// ラッパ

番号に0を指定しているので、”リンゴ”が”ミカン”に変更されております。

Point
  • リストの要素を入れ替えるには、set(番号, 要素)を使用

まとめ

  • MutableListの初期化には、mutableListOf()関数を使用する
  • 要素の取得は、[番号]か、get(番号)を使用する
  • MutableListの番号(index)は、0から始まる
  • リストの最後に要素を追加するには、add(要素)を使用する
  • リストの任意の位置に要素を追加するには、add(番号, 要素)を使用する
  • リストにリストを追加を追加するには、addAll(リスト)を使用
  • 削除する要素を指定して削除するには、remove(要素)を使用する
  • 削除する番号を指定する方法するには、remove(番号)を使用する
  • リストからリストを削除するには、removeAll(リスト)を使用
  • 全ての要素を削除するには、clear()を使用
  • リストの要素を入れ替えるには、set(番号, 要素)を使用