言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Kotlin辞典

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

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

対応: Kotlin 1.0(2016)

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

構文

// 不変リストの作成
val members = listOf("五条悟", "虎杖悠仁", "伏黒恵")

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

// インデックスアクセス
val first = members[0]        // "五条悟"
val last = members.last()     // "伏黒恵"

// サイズと空チェック
println(members.size)         // 3
println(members.isEmpty())    // false
println(members.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 の要素を削除します。

サンプルコード

sample_list_create.kt
fun main() {
    // 不変リスト
    val members = listOf("五条悟", "虎杖悠仁", "伏黒恵", "釘崎野薔薇")
    println("members: $members")
    println("サイズ: ${members.size}")

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

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

    // 検索
    println("虎杖悠仁を含む: ${"虎杖悠仁" in members}")  // true
    println("両面宿儺を含む: ${"両面宿儺" in members}")  // false
    println("インデックス: ${members.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
}
kotlinc list_create.kt -include-runtime -d list_create.jar
java -jar list_create.jar
members: [五条悟, 虎杖悠仁, 伏黒恵, 釘崎野薔薇]
サイズ: 4
最初: 五条悟
最後: 釘崎野薔薇
2番目: 虎杖悠仁
null
虎杖悠仁を含む: true
両面宿儺を含む: false
インデックス: 2

初期: [10, 20, 30]
追加後: [10, 15, 20, 30, 40]
削除後: [15, 30, 40]
更新後: [100, 30, 40]

空: true
firstOrNull: null

概要

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

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

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

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