为了账号安全,请及时绑定邮箱和手机立即绑定

Kotlin中的列表是LinkedList吗?

Kotlin中的列表是LinkedList吗?

Smart猫小萌 2021-04-15 10:46:35
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,但这是一个实现细节。

如果需要,有几个函数可以显式地返回更特定的类型。有arrayListOfsortedSetOflinkedMapOf,和一对夫妇更多-有不正好是一个linkedListOf,但你很可能实现它自己,如果你需要一个,不希望使用LinkedList构造函数。

比较通用listOfmutableListOf如果有更改,则最好在以后在平台之间共享代码-因为它们是标准库的一部分,因此它们可以ArrayList在JVM上返回,但是如果您编译为JavaScript或Native则可以返回特定于平台的实现。


查看完整回答
反对 回复 2021-04-28
?
智慧大石

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接口(即,它是不可变的)。


查看完整回答
反对 回复 2021-04-28
  • 3 回答
  • 0 关注
  • 351 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信