为什么arrayOf()与mutableListOf()相同但受到限制?

时间:2019-01-19 21:10:26

标签: android kotlin

试图了解使arrayOf()mutableListOf()相同但删除诸如add()remove()之类的功能时的意义是什么?

1 个答案:

答案 0 :(得分:1)

它们是不同的:

arrayOf()在引擎盖下创建一个Array,并mutableListOf()一个ArrayList

您选择哪种取决于您的应用程序。

数组是固定大小的数据结构。为了添加/删除值,您需要创建具有新更改的旧数组的副本(这是很昂贵的),但是无论您是大数组,访问元素都具有恒定的时间复杂度。不过,您需要手动执行此操作。

另一方面,ArrayList也将数组用于内部表示,但是为您提供了可变的接口。因此,添加/删除元素仍然会导致内部数组被复制,但是此过程对您来说是抽象的。

结论:

  • 如果需要一次初始化列表,并且仅在帽子访问之后初始化,则应使用Array
  • 如果您需要在极少数情况下添加/删除元素并且大多数内容正在读取,则应使用ArrayList
  • 如果您需要不断添加/删除值,请使用LinkedList