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.