Java中最受欢迎的列表是ArrayList和LinkedList。我在Kotlin看到ArrayList和List。是List实际上是一个LinkedList?例如val list = listof("1st", "2nd")
3 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
如果使用listOf
,您将获得List
带有只读List
接口的某种实现,其中包含您作为参数提供的元素。通过使用此功能,意味着您不关心它的实现方式。
它实际上由的支持Arrays.ArrayList
,这是一个稍有不同的类。
如果mutableListOf
再次使用,则只是在说您想要包含实现的元素的东西MutableList
,但是实现取决于标准库。同样,当前由来支持ArrayList
,但这是一个实现细节。
如果需要,有几个函数可以显式地返回更特定的类型。有arrayListOf
,sortedSetOf
,linkedMapOf
,和一对夫妇更多-有不正好是一个linkedListOf
,但你很可能实现它自己,如果你需要一个,不希望使用LinkedList
构造函数。
比较通用listOf
,mutableListOf
如果有更改,则最好在以后在平台之间共享代码-因为它们是标准库的一部分,因此它们可以ArrayList
在JVM上返回,但是如果您编译为JavaScript或Native则可以返回特定于平台的实现。
智慧大石
TA贡献1946条经验 获得超3个赞
它既不是LinkedList
也不是ArrayList
。根据源代码:
public fun <T> listOf(element: T): List<T> = java.util.Collections.singletonList(element)
或者,对于多个元素:
public fun <T> listOf(vararg elements: T): List<T> = if (elements.size > 0) elements.asList() else emptyList()
最后一段代码调用ArraysUtilJVM
,而后者又调用Arrays.asList()
,返回一个Arrays.ArrayList
实例。但是,这是一个实现细节,将来可能会更改。重要的是,结果对象实现了List
接口(即,它是不可变的)。
添加回答
举报
0/150
提交
取消