Kotlin'in MutableList'ini MutableList'i boşaltması için nasıl başlatırım?


241

Çok basit görünüyor, ama Kotlin'leri MutableListboşaltmak için nasıl başlatırım MutableList?

Ben bu şekilde kesmek olabilir, ama eminim daha kolay bir şey var:

var pusta: List<Kolory> = emptyList()
var cos: MutableList<Kolory> = pusta.toArrayList()

Yanıtlar:


436

Basitçe şunu yazabilirsiniz:

val mutableList = mutableListOf<Kolory>()

Bu en deyimsel yol.

Alternatif yollar

val mutableList : MutableList<Kolory> = arrayListOf()

veya

val mutableList : MutableList<Kolory> = ArrayList()

Bu, java türlerinin bir derleyici hilesi ArrayListile örtük olarak uyguladığı gerçeğinden yararlanmaktadır MutableList.


Bir şey içe aktarmanız gerekiyor mu? Bunu mevcut projemde yazarken, mutableListOf
vextorspace

Sınıf yolunuzda stdlib var mı?
Kirill Rakhman

Sadece build.gradle içindeki kotlin_version bayrağımı 1.1.1 yerine 1.1.0'a geri döndürmek zorunda
kaldım

1
O yıllardan @androiddeveloper çünkü kotlin.collections.Listolduğunu değil java.utils.List . Kotlin'in bazı yerleşik java türlerini eşleştirmek için bir mekanizması vardır. Lütfen kotlinlang.org/docs/reference/java-interop.html#mapped-types ve benzeri SO sorularına başvurun . Yorum bölümü bunu ayrıntılı olarak tartışmak için uygun değildir.
Kirill Rakhman

1
@Mohanakrrishna evet, işlevler argümanları iletmeyi destekler.
Kirill Rakhman

17

Dizi Listesi için Liste türüne bağlı olarak çeşitli formlar:

val myList = mutableListOf<Kolory>() 
// or more specifically use the helper for a specific list type
val myList = arrayListOf<Kolory>()

LinkedList için:

val myList = linkedListOf<Kolory>()
// same as
val myList: MutableList<Kolory> = linkedListOf()

Diğer liste türleri için, bunları doğrudan oluşturursanız Mutable olarak kabul edilir:

val myList = ArrayList<Kolory>()
// or
val myList = LinkedList<Kolory>()

Bu, Listarabirimi uygulayan her şey için geçerlidir (örneğin, diğer koleksiyon kütüphaneleri).

Liste zaten Değişken ise, sol taraftaki türü tekrarlamanıza gerek yoktur. Veya yalnızca bunları salt okunur olarak değerlendirmek istiyorsanız, örneğin:

val myList: List<Kolory> = ArrayList()

Yeni MutableList'in boyutunu bilirsem ne olur? ArrayList için yapabilirim: ArrayList(24)örneğin, 24'ün bunun için iyi bir başlangıç ​​olduğunu düşünüyorsanız, muhtemelen bundan daha fazlasına ihtiyaç duymayacaktır.
android geliştirici

@androiddeveloper Liste oluşturucuların belgelerini veya temel alınan listeler için Java API'sini görüntüleyin; istediğiniz şeylere ilişkin seçenekleri göreceksiniz.
Jayson Minard

unuttun mutableListOf. Doğru:val myList = arrayListOf<Kolory>() // same as // val myList = mutableListOf<Kolory>()
user924

10

Aşağıdakileri yapmak istiyorum:

var book: MutableList<Books> = mutableListOf()

/ ** Verilen öğelerle yeni bir [MutableList] döndürür. * /

public fun <T> mutableListOf(vararg elements: T): MutableList<T>
    = if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))
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.