在Kotlin代码中使用listOf()arrayListOf()是否有最佳实践?
它们实际上都返回相同的实现,并且我理解listOf更好,因为它与特定的实现无关。
Here是它的文档吗?
它以语言样式记录在任何地方吗?
还有其他理由要使用每一个吗?

最佳答案

一个值得注意的重要区别是listOf提供了一个只读的List,而arrayListOf提供了一个MutableList。绝对最好在可能的情况下使用只读数据结构。

val l1 = listOf(1)
l1.add(2) //not possible

val l2 = arrayListOf(2)
l2.add(1) //ok

另一方面,如果您不完全依赖类型推断,则还可以使ArrayList的变量为只读:
val l3: List<Int> = arrayListOf(2)
l3.add(1) //not possible anymore

不使用arrayListOf的要点是您要依赖库来选择实际的实现。截至目前,这恰好是ArrayList,可能会在将来的版本中更改。例如,如果Kotlin决定添加一个更强大的ArrayList向后兼容版本,则他们可以更改实现,并且您的代码将继续工作(以一种改进的方式)。另一方面,如果您想依靠ArrayList(通过arrayListOf),则可能有一个具体方案,仅此实现是可以接受的。

10-07 22:49