我想学习“ Kotlin 原生方式”在Android上做事,同时既不是Kotlin,Java也不是Android开发方面的专家。具体来说,是何时使用ArrayList
和MutableList
。
在我看来 MutableList
should be chosen whenever possible。但是,如果我看一下Android示例,它们似乎总是选择ArrayList
(据我到目前为止发现的那样)。
以下是使用ArrayList
并扩展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 - 使用Kotlin的MutableList或ArrayList在Android中需要列表的地方,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53218501/