Bagaimana cara menambahkan item ke ArrayList di Kotlin?

Jawaban:

103

Untuk orang yang baru saja bermigrasi java, In Kotlin Listsecara default tidak dapat diubah dan versi Daftar yang dapat diubah dipanggil MutableList.

Karenanya jika Anda memiliki sesuatu seperti:

val list: List<String> = ArrayList()

Dalam hal ini Anda tidak akan mendapatkan add()metode karena daftar tidak dapat diubah. Karenanya Anda harus mendeklarasikan a MutableListseperti yang ditunjukkan di bawah ini:

val list: MutableList<String> = ArrayList()

Sekarang Anda akan melihat add()metode dan Anda dapat menambahkan elemen ke daftar apa pun.

Tarun
sumber
5
Terima kasih! Saya telah membenturkan kepala saya atas metode plus itu di Array ...
dasfima
1
Bagus, hanya yang saya cari. Terima kasih.
Sam Chen
Apa perbedaan penggunaan antara val list: MutableList<String> = ArrayList()dan val list = mutableListOf<String>()?
Sam Chen
79

Jika Anda memiliki koleksi MUTABLE :

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

Jika Anda memiliki koleksi yang TIDAK DAPAT DIUBAH :

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

perhatikan yang saya gunakan valuntuk daftar yang bisa berubah untuk menekankan bahwa objek selalu sama, tetapi isinya berubah.

Dalam kasus daftar yang tidak dapat diubah, Anda harus membuatnya var. Objek baru dibuat oleh +=operator dengan nilai tambahan.

guenhter
sumber
7
lakukan +=dalam daftar yang tidak dapat diubah, perlu menyalin semua elemen daftar dalam daftar yang dapat diubah baru dan kemudian menetapkannya kembali ke daftar Anda yang sebenarnya. Saya tidak tahu itu cocok untuk menyatakan daftar Anda sebagai var. bagaimanapun, menyatakan daftar sebagai var bukanlah ide yang baik untuk saya.
crgarridos
1
Jika daftar tidak dapat diubah, Anda tidak memiliki opsi lain sebagai mendeklarasikannya sebagai var. Jika daftar yang tidak dapat diubah dinyatakan sebagai val, maka daftar tersebut tidak akan pernah dapat diubah. Menugaskan kembali ke variabel lain akan memungkinkan.
guenhter
1
Tepatnya, saya tidak ingin mengizinkan untuk mengubah referensi variabel saya. itu dapat memiliki efek samping dalam tugas-tugas eksternal / konkurensi. lebih baik membuat salinan untuk mengekstrak logika. Tapi ini di luar cakupan pertanyaan.
crgarridos
24

Jika Anda ingin secara khusus menggunakan java ArrayList maka Anda dapat melakukan sesuatu seperti ini:

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

Jika tidak, jawaban @guenhter adalah yang Anda cari.

pokemzok.dll
sumber