我正在尝试学习“Kotlin 原生方式”在 Android 中做事,同时既不是 Kotlin、Java 也不是 Android 开发方面的专家。具体来说,何时使用 ArrayList
与 MutableList
。
在我看来 MutableList
should be chosen whenever possible 。然而,如果我看一下 Android 示例,他们似乎总是选择 ArrayList
(据我目前发现)。
下面是使用 ArrayList
的工作示例的 fragment 并扩展了 Java 的 RecyclerView.Adapter
.
class PersonListAdapter(private val list: ArrayList<Person>,
private val context: Context) : RecyclerView.Adapter<PersonListAdapter.ViewHolder>() {
问题 1)
即使我借用了 Android 的 Java 代码,我是否可以简单地将上面的代码编写如下(注意 MutableList<>
而不是 ArrayList<>
)?
class PersonListAdapter(private val list: MutableList<Person>,
private val context: Context) : RecyclerView.Adapter<PersonListAdapter.ViewHolder>() {
问题 2)
总是使用 MutableList
真的更好吗?超过ArrayList
?主要原因是什么?我上面提供的一些链接超出了我的想象,但在我看来 MutableList
是一个更宽松的实现,将来更有能力改变和改进。是这样吗?
最佳答案
区别在于:
如果您使用
ArrayList()
您明确表示“我希望这是ArrayList
的MutableList
实现,并且永远不会更改为其他任何内容”。如果您使用
mutableListOf()
这就像说“给我默认的MutableList
实现”。
MutableList
的当前默认实现( mutableListOf()
) 返回 ArrayList
。如果将来(不太可能)这种情况发生变化(如果设计了新的更有效的实现),这可能会更改为 ...mutableListOf(): MutableList<T> = SomeNewMoreEfficientList()
。
在这种情况下,无论您在代码中的何处使用 ArrayList()
这将留下ArrayList
。无论您在哪里使用过mutableListOf()
这将从ArrayList
改变到名字辉煌的SomeNewMoreEfficientList
.
关于android - 在 Android 中需要列表的地方使用 Kotlin Mutable List 或 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53218501/