kotlin - Kotlin 中 ArrayList() 和 mutableLis

private val repositories = mutableListOf<String>()

private val repositories = ArrayList<String>()

都是可变列表,那么mutableListOfArrayList这两个关键字的意义何在?

或者有什么大的不同吗?

最佳答案

两者之间的唯一区别是传达您的意图。

当您编写 val a = mutableListOf() 时,您是在说“我想要一个可变列表,而且我并不特别关心实现”。相反,当您编写 val a = ArrayList() 时,您是在说“我特别想要一个 ArrayList”。

实际上,在当前 Kotlin 编译到 JVM 的实现中,调用 mutableListOf 将产生一个 ArrayList,并且在行为上没有区别:一旦构建了列表,一切都将表现相同。

现在,假设 Kotlin 的 future 版本更改了 mutableListOf 以返回不同类型的列表。

如果 Kotlin 团队认为新的实现更适合大多数用例,他们就会做出这种改变。 mutableListOf 然后会让你透明地使用这个新的列表实现,你会免费获得更好的行为。如果这听起来像您的情况,请使用 mutableListOf

另一方面,也许你花了很多时间思考你的问题,并认为 ArrayList 真的 最适合你的问题,而你没有不想冒险被转移到次优的地方。然后你可能想要直接使用 ArrayList,或者使用 arrayListOf 工厂函数(一个 ArrayList 特定的类似物到 mutableListOf)。

关于kotlin - Kotlin 中 ArrayList<String>() 和 mutableListOf<String>() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114367/

相关文章:

arrays - 如何在 kotlin 中创建一个空数组?

kotlin - 如何在 kotlin 中检查 "instanceof "类?

android-studio - Kotlin 字节码 - 如何在 IntelliJ IDEA 中分

java - 如何仅通过提供大小来像在 Java 中一样在 Kotlin 中创建数组?

java - 如何在 Kotlin 中创建匿名接口(interface)的实例?

kotlin - 如何从 Kotlin 的资源中读取文本文件?

list - 如何在 kotlin 中克隆或复制列表

algorithm - Kotlin - 从数组中删除重复字符串的惯用方法?

kotlin - Kotlin 中的 Getter 和 Setter

object - Kotlin:类中对象和伴随对象之间的区别