Kotlin我无法将元素添加到arrayOf的末尾

问题是,我无法理解以下之间的区别:数组、列表和数组列表我知道,数组本质上是可变的,但列表不是。当我尝试在简单数组的末尾添加一些东西时,没有像“ADD”这样的函数,我必须即兴发挥,但是在 mutableListOf 但在 ListOf 中没有!为什么?列表可以改变它们的大小,我不明白为什么 ListOf 没有像 .add 这样的功能?有人可以用简单的话解释我吗?

回答

当谈到像 Kotlin 这样具有函数式结构的语言时,需要注意的一件事是可变性

不可变对象(unchangeable object)是一种对象,其状态在创建后无法修改。

不可变对象很有用,因为它们本质上是线程安全的。其他好处是它们比可变对象更易于理解和推理,并提供更高的安全性。

回答你的问题:

  • arrayOf()返回一个Array. Kotlin 的数组元素可以改变,所以是的,你是对的,它是可变的。但另一方面,它的大小是固定的。这就是你不能add在数组上调用的原因。

  • listOf()返回一个只读列表,因此您不能假设向其中添加更多元素或更改其元素。

  • arrayListOf()返回一个ArrayList可变列表的实现。您可以向此列表添加更多元素、删除元素以及更改其元素。


更新 2/12/2020

感谢您指出这一点,Alex.T。我需要纠正一件事。listOf()不返回不可变列表,实际上它返回一个只读列表。

只读列表与不可变列表几乎相同。防止被修改;但是,如果底层列表被修改,只读列表也会被更改。您可以通过将其转换为可变的来修改底层列表,或者从 Java 更改它。


以上是Kotlin我无法将元素添加到arrayOf的末尾的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>