Kotlin中如何在运行时初始化指定大小的MutableList数组
Kotlin动态大小MutableList数组的正确初始化方式
你原来的代码错误在于误用了arrayOf函数——arrayOf是用来直接传入元素创建数组的,并不支持“指定大小+初始化lambda”的用法。要创建运行时确定大小、每个元素都是新的MutableList<Float>的数组,应该使用**Array类的构造函数**,它专门支持传入长度和初始化逻辑。
正确的写法如下:
fun foo(numLists: Int) { // 使用Array构造器:第一个参数是数组大小,第二个lambda负责初始化每个位置的元素 val daLists = Array(numLists) { mutableListOf<Float>() } // 正常使用数组中的列表 daLists[0].add(1.5f) daLists[1].add(3.2f) // ... }
关键说明:
Array(size: Int, init: (Int) -> T)构造器会根据传入的size创建对应长度的数组,然后对每个索引位置调用init函数生成元素。这里每个位置都返回一个全新的mutableListOf<Float>,保证所有列表都是独立可变的。- 如果你更倾向于使用Kotlin推荐的集合而非数组(除非有特定场景需求),也可以用
MutableList的构造器实现相同效果:
写法更贴合Kotlin集合习惯,元素访问方式和数组一致,同样支持val daLists = MutableList(numLists) { mutableListOf<Float>() }[]操作符。
内容的提问来源于stack exchange,提问作者SMBiggs
相关产品推荐
相关产品推荐

