Skip to main content

arrayOf 和 listOf

在 Kotlin 中,arrayOf 和 listOf 都用于创建集合,但它们分别创建的是不同类型的集合:数组和列表。这两种类型在用途、性能和操作上有所区别。

arrayOf

  • 类型:创建一个数组(Array 类型)。数组是固定大小的,其元素类型可以是任何类型,包括基本类型(如 IntArray、ByteArray 等)和对象类型。
  • 性能:对于基本类型数组,由于避免了装箱操作,因此访问速度可能更快。
  • 修改性:数组的大小是固定的,但你可以修改数组中的元素。
  • 用法示例:
val nums = arrayOf(1, 2, 3) // 创建一个整型数组
nums[0] = 10 // 修改数组中的元素

listOf

  • 类型:创建一个列表(List 接口的实例)。默认情况下,listOf 创建的是一个不可变列表,其大小和内容在创建后不能修改。如果你需要一个可变列表,可以使用 mutableListOf()。
  • 性能:列表在存储对象引用时可能涉及更多的装箱操作,但提供了更多的灵活性,如更易于扩展、缩减和进行高级集合操作。
  • 修改性:使用 listOf 创建的列表是不可变的。要创建一个可变列表,需要使用 mutableListOf()。
val nums = listOf(1, 2, 3) // 创建一个不可变列表
// nums[0] = 10 // 这会导致编译错误,因为listOf创建的列表是不可变的

主要区别

  • 类型差异:arrayOf 创建的是数组类型 (Array), listOf 创建的是列表类型 (List)。
  • 可变性:数组允许修改其中的元素,但其大小固定;而 listOf 创建的列表是不可变的,不允许修改元素或列表大小。可变列表可以通过 mutableListOf() 创建。
  • 性能考虑:对于基本数据类型,数组可能提供更高的性能,因为它们存储的是基本类型的直接值,不涉及装箱。列表则提供了更多的功能和灵活性,但可能在性能上稍逊一筹,特别是在频繁修改集合大小的场景下。