private val repositories = mutableListOf<String>()
private val repositories = ArrayList<String>()
都是可变列表,那么mutableListOf
或ArrayList
这两个关键字的意义何在?
或者有什么大的不同吗?
最佳答案
两者之间的唯一区别是传达您的意图。
当您编写 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/