这个问题在这里已经有了答案:
Difference between List and Array types in Kotlin
(3 个回答)
3年前关闭。
刚开始使用 Kotlin,我喜欢它,但是......
我无法理解这种语言中的 Lists 和 Arrys。
我对编程并不陌生,不需要解释什么是数组。我不明白的是。
有人可以列出所有它们的详尽 list ,并在您使用每一个时给出某种经验法则。具体来说,我发现不可变空列表的概念非常令人困惑。那到底是用来做什么的?
对不起,很长的问题,
谢谢。
最佳答案
List
是描述一些常见列表操作的接口(interface),而Array
是一类。从内存的角度来看,Array
是内存中大小不变的连续区域,这就是为什么您不能更改 Array
的大小的原因创建后,但您可以更改其元素,另一方面 List
可以用不同的方式实现,这意味着内存结构可以不同,最常见的实现是ArrayList
其中数组用于存储元素,一旦数组被填充,它就会被更大的数组改变,旧数组的内容被添加到新数组中,另一种实现是LinkedList
,您的节点指向列表中的下一个元素。从性能角度 Array
总是比 List
的任何实现都快但它也受到更多限制。 List
之间的区别和 MutableList
是当你使用 MutableList
您可以更改该列表的元素(添加或从中删除元素),而使用不可变 List
您不能从中添加或删除元素。这两个列表都允许您更改这些元素的属性。 List
是扩展 Collection
的接口(interface)接口(interface),提供基本的常用列表操作,MutableList
扩展 List
接口(interface)以及MutableCollection
接口(interface)添加更改该列表元素所需的方法,listOf
是创建 List
的函数并用给定的参数填充它,使用 listOf
我们不需要指定 List
的哪个实现将被使用,例如在 JVM List
上由 java.util.Arrays.ArrayList
支持(与 java.util.ArrayList
不同),而在 JavaScript 方面,它可能由 Array
支持(请谨慎对待此声明,因为我从未与 Kotlin 合作过 JS)ArrayList
是 类型别名 至java.util.ArrayList
,没有什么特别的,它是Java的List
的实现接口(interface), MutableList
由 JVM 上的此实现支持。 Array
相当于Java的数组,也没什么特别的,IntArray
等原始数组公司用来弥补kotlin中原始类型的不足,Array<Int>
与 Integer[]
相同在 Java 中,而 IntArray
与 int[]
相同.相同的逻辑适用于所有其他变体。使用原始类型可以获得更好的性能,但在现代计算机上的大多数情况下可以忽略差异,但如果您确实有很多数据,您应该尽可能使用原始类型。 您可以在 kotlin repository 上查看自己的所有集合层次结构
listOf
, arrayOf
, mutableListOf
,这不是必须的,但遵循最佳实践总是好的。 关于Kotlin 列表和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53301263/