HOWTO · Kotlin

Kotlin でリストを初期化するための究極のガイド

Kotlin リストを使用すると、アクセス可能で変更可能なアイテムを収集して保存できます。 このガイドでは、Kotlin でリストを初期化する方法をいくつか紹介します。

このページの内容

Kotlin List<T> は、複数の要素のコレクションを参照します。 構文の <T> は、未定義のデータ型を示します。 これは、List<T> を使用して初期化されたリストには特定のデータ型がないことを意味します。

Collections クラスの定義済み関数を使用して、いつでも List の項目に簡単にアクセスして変更できます。

Kotlin では、不変と可変の 2 種類のリストを初期化できます。 これらのリストを初期化するにはさまざまな方法があり、この記事で説明します。

Kotlin で不変リストを初期化する

不変リストは、一度作成すると変更できないコレクションです。 これらは、List インターフェイスを使用して定義され、List や ArrayList などの List 実装クラスによって表されます。

不変リストを初期化する 3つの方法について学習します。 これらの 3つの方法には、次のものが含まれます。

  1. listOf()
  2. emptyList()
  3. listOfNotNull()

listOf() 関数で Kotlin リストを初期化する

listOf() は Collections クラスの最上位関数です。 このメソッドは、項目の不変リストを作成します。 Java での Arrays.asList の使用に似ています。

次の構文を使用して、不変の Kotlin リストを初期化できます。

val listName = listOf(item1, item2, item3)

次に、上記の構文を使用して簡単な Kotlin プログラムを作成します。 このプログラムでは、Fruits という名前の不変の Kotlin List を作成し、いくつかの果物を追加します。

fun main(args: Array<String>) {
    val Fruits = listOf("Apple", "Mango", "Strawberry")
    println(Fruits)
}

Kotlin リストの作成と初期化

これは不変リストです。 したがって、定義済みのメソッドを使用してリストを変更すると、エラーが発生します。

add() 関数を使用して、前の例で定義したのと同じ不変リストに要素を追加しようとすることで、これを実際に確認します。

fun main(args: Array<String>) {
    val Fruits = listOf("Apple", "Mango", "Strawberry")
    println(Fruits)
    Fruits.add("Kiwi")
    println(Fruits)
}

不変リストに新しい要素を追加するとエラーが発生する

出力に見られるように、add() メソッドは unresolved reference: add エラーをスローします。

emptyList() 関数で Kotlin リストを初期化する

不変の Kotlin List を作成する次の方法は、emptyList() 関数を使用することです。 listOf() 関数と同様に機能しますが、唯一の違いは、空のリストを作成することです。

これは、リストを作成することを意味しますが、リストが空になるため、初期化は行われません。

emptyList() 関数を使用する構文は次のようになります。

val listName: List<String/Int> = emptyList()

emptyList() を使用して、Kotlin で空の不変リストを作成する方法を示すプログラムを次に示します。

fun main() {
    val emptyImmutableList: List<String> = emptyList()
    println(emptyImmutableList)
}

emptyList()関数で空リストを作成

listOfNotNull() 関数で Kotlin リストを初期化する

listOfNotNull() 関数は、null を含まない既存のコレクションから新しいリストを返します。

いくつかの String 値といくつかの null 値を持つリストがある場合、このメソッドは String 値のみを持つ新しいリストを提供します。 ただし、リストに null 値しかない場合、関数は空のリストを返します。

結果のリストは読み取り専用です。 したがって、listOfNotNull() 関数は、不変の Kotlin リストを初期化する方法として機能します。

listOfNotNull() 関数の構文は次のとおりです。

fun <T : Any> listOfNotNull(element: T?): List<T>

以下のプログラムでは、3つのリストを作成します。 1つは null 値のみを持ち、2 番目は non-null 値のみを持ち、3 番目は null 値と non-null 値の混合を持ちます。

fun main(args: Array<String>) {
    val nullValuesList = listOfNotNull(null, null)
    println(nullValuesList)

    val nonNullValuesList = listOfNotNull(13, "Hello", "Hi", 96)
    println(nonNullValuesList)

    val mixList = listOfNotNull(13, null, "Hello", null, 96)
    println(mixList)
}

listOfNotNull() 関数を使用して null 値なしでリストを初期化する

最初の println() 関数は、最初のリスト nullValuesList に 2つの null 値しかないため、空のリストになります。 2 番目の println() 関数は、2 番目のリスト nonNullValuesList のすべての要素を出力します。

ただし、3 番目の println() 関数は、mixList からの non-null 値のみを含むリストを出力します。

Kotlin で可変リストを初期化する

可変リストは、必要に応じてアクセスして変更できる変更可能なコレクションです。 このセクションでは、Kotlin リストを初期化する 2つの方法を見ていきます。

実行する2つの方法は次のとおりです。

  1. mutableListOf()
  2. arrayListOf()

mutableListOf() 関数で Kotlin リストを初期化する

変更可能な Kotlin リストを初期化する最初の方法は、mutableListOf() メソッドを使用することです。 listOf() 関数と同様に、mutableListOf() も Kotlin List の作成と初期化を可能にします。

ただし、この関数は変更可能なリストを作成します。つまり、このリストから要素を追加または削除できます。

mutableListOf() の構文は次のとおりです。

var listName = mutableListOf(item1, item2, item3)

以下の Kotlin プログラムを作成して、Fruits という名前の変更可能なリストを作成および初期化します。 次に、リストに新しい要素を追加し、別のアイテムを削除します。

fun main(args: Array<String>) {
    var Fruits = mutableListOf("Apple", "Mango", "Strawberry")
    println(Fruits)

    // Adding a new element to the list
    Fruits.add("Kiwi")
    println(Fruits)

    // Removing an element from the list
    Fruits.remove("Mango")
    println(Fruits)
}

可変リストの作成と初期化

出力に見られるように、今回は add() 関数は unresolved reference エラーをスローしません。 これは、作成したリストが可変であるためです。

arrayListOf() 関数で Kotlin リストを初期化する

変更可能な Kotlin list を初期化するもう 1つの方法は、arrayListOf() 関数を使用することです。 このメソッドは、配列を作成して初期化します。

arrayListOf() 関数の構文は次のとおりです。

var listName = arrayListOf(item1, item2, item3)

上記の構文を使用して、Cars という名前の変更可能な Kotlin ArrayList を作成し、いくつかの自動車ブランドで初期化します。 次に、新しい要素を ArrayList に追加して、それが変更可能であることを確認します。

fun main(args: Array<String>) {
    var Cars = arrayListOf("Mercedes Benz", "BMW", "Bentley")
    println(Cars)

    Cars += listOf("Ferrari", "Lamborghini")
    println(Cars)
}

変更可能な配列リストの作成と初期化