Kotlin'de bir ArrayList'e nasıl öğe eklenir?


Yanıtlar:


103

Yeni geçiş yapan kişiler için java, In Kotlin Listvarsayılan olarak, Listelerin değişmez ve değiştirilebilir sürümüdür MutableList.

Dolayısıyla, şöyle bir şeye sahipseniz:

val list: List<String> = ArrayList()

Bu durumda add(), liste değişmez olduğu için bir yöntem elde edemezsiniz . Bu nedenle, MutableListaşağıda gösterildiği gibi bir beyan etmeniz gerekecektir :

val list: MutableList<String> = ArrayList()

Şimdi bir add()yöntem göreceksiniz ve herhangi bir listeye öğeler ekleyebilirsiniz.


5
Teşekkür ederim!
Arrays'deki

1
Güzel, tam aradığım şey. Teşekkür ederim.
Sam Chen

Arasındaki kullanım fark nedir val list: MutableList<String> = ArrayList()ve val list = mutableListOf<String>()?
Sam Chen

79

Eğer bir varsa DEĞİŞKEN koleksiyon:

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

Bir varsa IMMUTABLE koleksiyon:

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

valDeğişken liste için nesnenin her zaman aynı olduğunu, ancak içeriğinin değiştiğini vurgulamak için kullandığıma dikkat edin .

Değişmez liste durumunda, onu yapmanız gerekir var. +=Operatör tarafından ek değer ile yeni bir nesne oluşturulur .


7
yapıyor +=bir sigara değişken listesinde, yeni bir değişken listesindeki listenin tüm unsurları kopyalayın ve daha sonra gerçek listeye atanması seçeneğini gerektirir. Listenizi olarak ilan etmenin uygun olduğunu bilmiyordum var. her neyse, bir liste ilan etmek benim için iyi bir fikir değil.
crgarridos

1
Bir liste değişmez ise, onu olarak ilan etmek gibi başka bir seçeneğiniz yoktur var. Değişmez bir liste olarak ilan edilirse val, liste hiçbir zaman değiştirilemez. Sadece onu başka bir değişkene atamak mümkün olacaktır.
guenhter

1
Kesinlikle, değişkenlerimin referansını değiştirmeye izin vermek istemiyorum. harici / eşzamanlılık görevlerinde bir yan etkisi olabilir. mantığı çıkarmak için bir kopya oluşturmak daha iyidir. Ancak bu, sorunun kapsamı dışındadır.
crgarridos

24

Özel olarak java ArrayList kullanmak istiyorsanız, şuna benzer bir şey yapabilirsiniz:

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

Aksi takdirde, aradığınız cevap @guenhter'dır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.