Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Kotlin辞典

  1. トップページ
  2. Kotlin辞典
  3. リスト — 生成 / listOf() / mutableListOf()

リスト — 生成 / listOf() / mutableListOf()

Kotlinのリストは『listOf()』で不変リスト、『mutableListOf()』で可変リストを作成します。インデックスアクセスや基本的なプロパティ(『size』『isEmpty()』)を使って要素を操作できます。

構文
// 不変リストの作成
val fruits = listOf("りんご", "バナナ", "オレンジ")

// 可変リストの作成
val numbers = mutableListOf(1, 2, 3)
numbers.add(4)
numbers.remove(2)

// インデックスアクセス
val first = fruits[0]        // "りんご"
val last = fruits.last()     // "オレンジ"

// サイズと空チェック
println(fruits.size)         // 3
println(fruits.isEmpty())    // false
println(fruits.contains("バナナ"))  // true
メソッド一覧
メソッド/プロパティ概要
listOf(要素...)不変リスト(List<T>)を作成します。
mutableListOf(要素...)可変リスト(MutableList<T>)を作成します。
emptyList()空の不変リストを作成します。
リスト[i]インデックス i の要素を取得します(範囲外は IndexOutOfBoundsException)。
リスト.getOrNull(i)インデックス i の要素を取得します(範囲外は null)。
リスト.size要素数を返します。
リスト.isEmpty()リストが空かどうかを返します。
リスト.contains(要素)要素が含まれるかを返します(in 演算子でも使えます)。
リスト.first() / last()最初/最後の要素を返します(空なら NoSuchElementException)。
リスト.firstOrNull() / lastOrNull()最初/最後の要素を返します(空なら null)。
MutableList.add(要素)末尾に要素を追加します。
MutableList.remove(要素)要素を1つ削除します。
MutableList.removeAt(i)インデックス i の要素を削除します。
サンプルコード
fun main() {
    // 不変リスト
    val fruits = listOf("りんご", "バナナ", "オレンジ", "ぶどう")
    println("fruits: $fruits")
    println("サイズ: ${fruits.size}")

    // インデックスアクセス
    println("最初: ${fruits[0]}")
    println("最後: ${fruits.last()}")
    println("2番目: ${fruits[1]}")

    // getOrNull — 範囲外でも安全
    println(fruits.getOrNull(10))   // null

    // 検索
    println("バナナを含む: ${"バナナ" in fruits}")  // true
    println("メロンを含む: ${"メロン" in fruits}")  // false
    println("インデックス: ${fruits.indexOf("オレンジ")}")  // 2

    println()

    // 可変リスト
    val numbers = mutableListOf(10, 20, 30)
    println("初期: $numbers")

    numbers.add(40)         // 末尾に追加
    numbers.add(1, 15)      // インデックス指定で挿入
    println("追加後: $numbers")  // [10, 15, 20, 30, 40]

    numbers.remove(20)      // 値で削除
    numbers.removeAt(0)     // インデックスで削除
    println("削除後: $numbers")  // [15, 30, 40]

    numbers[0] = 100        // 値の更新
    println("更新後: $numbers")  // [100, 30, 40]

    println()

    // 空チェック
    val empty: List<Int> = emptyList()
    println("空: ${empty.isEmpty()}")
    println("firstOrNull: ${empty.firstOrNull()}")  // null
}
概要

Kotlinのコレクションは不変(読み取り専用)と可変を明示的に区別します。『listOf()』で作ったリストは変更できませんが、変更可能な場合は『mutableListOf()』を使います。この区別によりコードの意図が明確になります。

『ArrayList<T>()』はJavaの『ArrayList』と同じで、内部的に『MutableList』として扱われます。Kotlinらしい書き方は『mutableListOf()』を使うことです。

リストの絞り込み・変換はリスト — filter() / map()を、反復処理はリスト — forEach() / forEachIndexed()を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。