我想学习“ Kotlin 原生方式”在Android上做事,同时既不是Kotlin,Java也不是Android开发方面的专家。具体来说,是何时使用ArrayListMutableList

在我看来 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(),则明确表示“我希望这是ArrayListMutableList实现,不要更改为其他任何东西”。
  • 如果您使用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/

    10-11 04:16