似乎很简单,但是,我如何初始化Kotlin的MutableList空MutableList?

我可以这样破解,但我相信有更简单的方法:

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

你可以简单地写:

val mutableList = mutableListOf<Kolory>()

这是最地道的方式。

其他方法有

val mutableList : MutableList<Kolory> = arrayListOf()

or

val mutableList : MutableList<Kolory> = ArrayList()

这利用了这样一个事实,即像ArrayList这样的java类型是通过编译器技巧隐式实现MutableList类型的。


根据列表类型的不同,有不同的形式,对于数组列表:

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

LinkedList:

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

对于其他列表类型,如果你直接构造它们,将被假定为Mutable:

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

这适用于任何实现List接口的东西(即其他集合库)。

如果列表已经是Mutable类型,则不需要重复左边的类型。或者仅当你想将它们视为只读时,例如:

val myList: List<Kolory> = ArrayList()

我喜欢以下内容:

var book: MutableList<Books> = mutableListOf()

/**返回一个包含给定元素的新[MutableList]。* /

public fun <T> mutableListOf(vararg elements: T): MutableList<T>
    = if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))

在kotlin中创建可空字符串的可变列表

val systemUsers: MutableList<String?> = mutableListOf()

使用Kotlin集合的MutableList()函数是绝对有效的,它故意看起来像一个构造函数。了解这个函数通常非常有用,因为它还可以使用一个初始化函数,预先填充一个(非空)列表的所有值。

val emptyListOfTypeUnit = MutableList(0) {}

val emptyListOfTypeInt = MutableList(0) { 0 }
val verboseEmptyListOfTypeInt = MutableList<Int>(0) { 0 }

val emptyListOfTypeString = MutableList(0) { "" }
val verboseEmptyListOfTypeString = MutableList<String>(0) { "" }

val emptyListOfTypeKolory = MutableList(0) { Kolory() }
val verboseEmptyListOfTypeKolory = MutableList<Kolory>(0) { Kolory() }

免责声明:我是在Jetbrains Academy针对Kotlin开发人员的课程中了解到这一点的,不幸的是,这门课程不是公开的。因此,我不能在这里链接引用。对不起。