You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin初学者疑问:List()创建列表与listOf()等方法有何不同?

Kotlin中List()构造函数与listOf()/toMutableList()的差异

1. 核心用途与本质不同

  • List(size: Int, init: (Int) -> T):这是Kotlin标准库的顶层函数,专门用来动态生成指定长度的列表。你给出的代码里,第一个参数是从输入读取的列表长度,第二个lambda会被调用size次,每次执行时读取一行输入转成Int,最终生成对应长度的列表。
  • listOf(vararg elements: T):用来创建包含固定已知元素的不可变列表,比如listOf(1, 2, 3),直接把传入的元素打包成列表。
  • toMutableList():这是集合的扩展函数,作用是把现有不可变集合(比如listOf创建的列表、数组)转换成可变列表(MutableList),允许后续添加、删除元素。

2. 创建逻辑的区别

  • List(size, init)是按需生成元素:不需要提前准备好所有元素,而是根据索引(lambda的参数是当前元素的索引,你的代码里没用到这个参数)动态计算或读取每个元素,适合批量生成/从外部数据源构建列表的场景。
  • listOf()是直接传入已有元素:元素是预先确定好的,适合元素数量少、内容明确的情况。
  • toMutableList()不是创建新列表的起点,而是转换现有集合的可变性,核心是改变集合的修改权限。

3. 返回值的可变性

  • List(size, init)和listOf()返回的都是不可变List,默认无法修改元素、添加或删除元素。
  • toMutableList()返回的是MutableList,支持add()、remove()、set()等修改操作。

示例对比

// 用List()动态生成5个元素(基于索引生成)
val dynamicList = List(5) { it } // 结果:[0, 1, 2, 3, 4]

// 用listOf()创建固定元素的列表
val fixedList = listOf(0, 1, 2, 3, 4)

// 把不可变列表转为可变列表并修改
val mutableList = fixedList.toMutableList()
mutableList.add(5) // 执行后mutableList变为[0, 1, 2, 3, 4, 5]

内容的提问来源于stack exchange,提问作者Jaguar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:42:37