我看到Kotlin有一个List<out E>
集合,我想知道初始化它的不同方法。在Java中,我可以这样写:
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
如何在Kotlin中实现相同目标?
我看到Kotlin有一个List<out E>
集合,我想知道初始化它的不同方法。在Java中,我可以这样写:
List<String> geeks = Arrays.asList("Fowler", "Beck", "Evans");
如何在Kotlin中实现相同目标?
Answers:
listOf
顶层功能进行救援:
val geeks = listOf("Fowler", "Beck", "Evans")
List<T>
,因此不应认为它是可变的。
伊利亚(Ilya)和加马里奥蒂(gmariotti)提出的正确答案都是正确的。但是,有些替代方案会在评论中散布开来,而根本没有提及。
该答案包括已经给出的答案的摘要,说明和一些其他选择。
List
)不可变或只读列表是不能添加或删除元素的列表。
listOf()
通常会做您想要的。这将创建一个不可变列表,类似于Arrays.asList
Java中的列表。emptyList()
执行相同的操作,但自然会返回一个空列表。listOfNotNull()
返回一个不包含所有null
元素的不可变列表。MutableList
)可变列表可以添加或删除元素。
mutableListOf()
,这通常是您需要在列表中添加或删除元素时想要的。arrayListOf()
。这将创建一个可变的ArrayList
。如果您确实想要ArrayList
实现,请在上方使用mutableListOf()
。List
没有便利功能的实现,可以将它们初始化为val list = LinkedList<String>()
。那只是通过调用对象的构造函数来创建对象。仅当您确实想要例如LinkedList
实现时才使用此功能。让我解释一些用例:让我们创建一个带有初始化项的不可变(不可更改)列表:
val myList = listOf("one" , "two" , "three")
让我们创建一个带有初始化字段的可变(可变)列表:
val myList = mutableListOf("one" , "two" , "three")
让我们声明一个不可变(不可更改),然后实例化它:
lateinit var myList : List<String>
// and then in the code :
myList = listOf("one" , "two" , "three")
最后,为每个添加一些额外的项目:
val myList = listOf("one" , "two" , "three")
myList.add() //Unresolved reference : add, no add method here as it is non mutable
val myMutableList = mutableListOf("one" , "two" , "three")
myMutableList.add("four") // it's ok
这样,您可以在Kotlin中初始化列表
val alphabates : List<String> = listOf("a", "b", "c")
listOf
?