java - Kotlin 中的 List 是链表吗?

标签 java arraylist linked-list kotlin

Java 中最流行的列表是ArrayListLinkedList

在 Kotlin 中,我看到 ArrayListListList 实际上是一个 LinkedList 吗?例如

val list = listof("1st", "2nd")

最佳答案

如果您使用 listOf ,您将获得某种 List 实现,带有只读 List接口(interface),包含您作为参数提供的元素。通过使用这个函数,你暗示你不关心它是如何实现的。 实际上,如果您在 JVM 上,这可能仍然是一个 java.util.ArrayList 正如@Zabuza 在这里的评论中指出的,它实际上是由一个略有不同的类 Arrays.ArrayList 支持。

如果您使用 mutableListOf ,同样,您只是说您想要包含实现 MutableList 的元素的东西 ,但实现取决于标准库。同样,这目前由 ArrayList 支持,但这是一个实现细节。

如果您确实需要,有几个函数可以显式返回更具体的类型。有 arrayListOf , sortedSetOf , linkedMapOf ,还有一些 - 碰巧没有 linkedListOf,但如果你需要一个并且不想使用 LinkedList,你可以自己实现它构造函数。

更通用的 listOfmutableListOf 是更可取的,如果有变化的话你以后会在平台之间共享你的代码——因为它们是标准库的一部分,它们可以在 JVM 上返回一个 ArrayList,但如果编译为 JavaScript 或 Native,则返回不同平台的特定实现。

关于java - Kotlin 中的 List 是链表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51042337/

相关文章:

java - 从父类(super class)创建 ArrayList 但包含扩展类的对象

java - 链接列表 - 无法弄清楚为什么此删除最后一个功能不起作用?

c有序链表逻辑错误

java - 将具有相同值的数组添加到 HashSet 会导致重复项

java - 通过比较两个ArrayList获取不匹配的值

java - ArrayLists更好的实践

c - 安全删除并发链表中的节点

java - Eclipse,更改编译器命令(用于 JOMP)

java - 如何为所有 JUnit 测试创建对象?

java - 有没有办法使用字符串参数列表和正则表达式(带组)来构造新字符串?