android - 在 Android 中需要列表的地方使用 Kotlin Mutable List 或 ArrayList

标签 android arraylist kotlin mutablelist

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

在我看来 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()您明确表示“我希望这是 ArrayListMutableList 实现,并且永远不会更改为其他任何内容”。

  • 如果您使用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/

相关文章:

lambda - 在 Kotlin 中将比较器转换为 lambda

android - 如何将数据从 Adapter 发送到 ViewModel 再到 Fragment

android - AlertDialog 在 Nexus 设备上看起来不同

java - 如何在空游戏中计算 FPS?

java - 从 Web 服务解析 Sax

java - ArrayList中如何区分String和Integer?

kotlin - 如何从 Compose-Navigation 中的返回堆栈中删除可组合项

android - 带有 React Native 和 Headless JS 的 Socket IO,杀不死它

android - 如何从服务器向客户端发送消息(TCP,android 应用程序)

java - 当 ArrayList 中确实存在项时,ArrayList 方法 "lastIndexOf"返回 -1