KotlinのArrayListにアイテムを追加するにはどうすればよいですか?


回答:


103

から移行したばかりの人にとってjava、InKotlin Listはデフォルトで不変であり、Listsの可変バージョンはと呼ばれMutableListます。

したがって、次のようなものがある場合:

val list: List<String> = ArrayList()

この場合add()、リストは不変であるため、メソッドを取得できません。したがって、MutableList以下に示すようにを宣言する必要があります。

val list: MutableList<String> = ArrayList()

これでメソッドが表示され、add()任意のリストに要素を追加できます。


5
ありがとうございました!私は...配列のそのプラス法上で、私の頭を叩いてきた
dasfima

1
いいですね、まさに私が探しているものです。ありがとうございました。
サム陳

間の使用差は何だval list: MutableList<String> = ArrayList()とはval list = mutableListOf<String>()
サム陳

79

MUTABLEコレクションがある場合:

val list = mutableListOf(1, 2, 3)
list += 4

IMMUTABLEコレクションがある場合:

var list = listOf(1, 2, 3)
list += 4

valオブジェクトは常に同じであるが、その内容が変わることを強調するために、可変リストに使用していることに注意してください。

不変リストの場合は、作成する必要がありますvar。新しいオブジェクトは+=、追加の値を使用してオペレーターによって作成されます。


7
やっ+=非可変のリストに、新しい可変-listにリストのすべての要素をコピーして、あなたの実際のリストにそれを再割り当てする必要があります。あなたのリストをとして宣言するのが適切だとは知りませんでしたvar。とにかく、リストを変数として宣言することは私にとって良い考えではありません。
crgarridos 2017

1
リストが不変である場合、それをとして宣言する以外のオプションはありませんvar。不変リストがとして宣言されているval場合、リストを変更することはできません。別の変数に再割り当てするだけで可能です。
guenhter 2017

1
正確には、変数の参照を変更することを許可したくありません。外部/同時実行タスクに副作用が生じる可能性があります。ロジックを抽出するためのコピーを作成することをお勧めします。しかし、これは問題の範囲外です。
crgarridos 2017

24

特にjavaArrayListを使用する場合は、次のようにすることができます。

fun initList(){
    val list: ArrayList<String> = ArrayList()
    list.add("text")
    println(list)
}

そうでなければ、@ guenhterの答えはあなたが探しているものです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.