如何将 Kotlin 的 MutableList 初始化为空 MutableList?
How do I initialize Kotlin's MutableList to empty MutableList?
看起来很简单,但是,如何将 Kotlin 的 MutableList
初始化为空 MutableList
?
我可以用这种方式破解它,但我确信有更简单的方法可用:
var pusta: List<Kolory> = emptyList()
var cos: MutableList<Kolory> = pusta.toArrayList()
你可以简单地写:
val mutableList = mutableListOf<Kolory>()
这是最地道的方式。
替代方法是
val mutableList : MutableList<Kolory> = arrayListOf()
或
val mutableList : MutableList<Kolory> = ArrayList()
这是在利用 java 类型如 ArrayList
通过编译器技巧隐式实现类型 MutableList
这一事实。
根据List类型的不同形式,对于Array List:
val myList = mutableListOf<Kolory>()
// or more specifically use the helper for a specific list type
val myList = arrayListOf<Kolory>()
对于链表:
val myList = linkedListOf<Kolory>()
// same as
val myList: MutableList<Kolory> = linkedListOf()
对于其他列表类型,如果直接构造它们,将被假定为 Mutable:
val myList = ArrayList<Kolory>()
// or
val myList = LinkedList<Kolory>()
这适用于任何实现 List
接口的东西(即其他集合库)。
如果列表已经是可变的,则无需重复左侧的类型。或者仅当您希望将它们视为只读时,例如:
val myList: List<Kolory> = ArrayList()
我喜欢下面的内容:
var book: MutableList<Books> = mutableListOf()
/** Returns 具有给定元素的新 [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() }
免责声明:我是在面向 Kotlin 开发人员的 Jetbrains Academy 课程中了解到这一点的,不幸的是,这不是 public。因此,我不能 link 在这里引用。对不起。
看起来很简单,但是,如何将 Kotlin 的 MutableList
初始化为空 MutableList
?
我可以用这种方式破解它,但我确信有更简单的方法可用:
var pusta: List<Kolory> = emptyList()
var cos: MutableList<Kolory> = pusta.toArrayList()
你可以简单地写:
val mutableList = mutableListOf<Kolory>()
这是最地道的方式。
替代方法是
val mutableList : MutableList<Kolory> = arrayListOf()
或
val mutableList : MutableList<Kolory> = ArrayList()
这是在利用 java 类型如 ArrayList
通过编译器技巧隐式实现类型 MutableList
这一事实。
根据List类型的不同形式,对于Array List:
val myList = mutableListOf<Kolory>()
// or more specifically use the helper for a specific list type
val myList = arrayListOf<Kolory>()
对于链表:
val myList = linkedListOf<Kolory>()
// same as
val myList: MutableList<Kolory> = linkedListOf()
对于其他列表类型,如果直接构造它们,将被假定为 Mutable:
val myList = ArrayList<Kolory>()
// or
val myList = LinkedList<Kolory>()
这适用于任何实现 List
接口的东西(即其他集合库)。
如果列表已经是可变的,则无需重复左侧的类型。或者仅当您希望将它们视为只读时,例如:
val myList: List<Kolory> = ArrayList()
我喜欢下面的内容:
var book: MutableList<Books> = mutableListOf()
/** Returns 具有给定元素的新 [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() }
免责声明:我是在面向 Kotlin 开发人员的 Jetbrains Academy 课程中了解到这一点的,不幸的是,这不是 public。因此,我不能 link 在这里引用。对不起。