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

如何在Kotlin中一行代码初始化嵌套列表?

Kotlin一行初始化嵌套列表的正确写法

你的写法编译失败的核心原因是:ArrayList没有接收多个独立元素的构造器重载,它仅支持无参、指定初始容量,或者传入一个已有的Collection作为参数。你直接传入多个arrayListOf实例,编译器找不到匹配的构造方法,因此报错。

结合你“不需要可变对象、列表大小固定”的需求,推荐以下几种简洁写法:

1. 完全不可变的嵌套列表(最推荐)

如果内外层都不需要修改,直接用listOf创建不可变列表,一行即可完成初始化:

val list: List<List<Int>> = listOf(
    listOf(1, 3, 5, 7),
    listOf(10, 11, 16, 20),
    listOf(23, 30, 34, 60)
)

listOf返回的是不可变List,完全匹配你“大小固定、无需可变对象”的需求,代码最简洁。

2. 外层不可变、内层为ArrayList

如果必须保持内层元素为ArrayList(比如需要调用ArrayList的特定方法),可以用listOf包裹多个arrayListOf实例:

val list2: List<ArrayList<Int>> = listOf(
    arrayListOf(1, 3, 5, 7),
    arrayListOf(10, 11, 16, 20),
    arrayListOf(23, 30, 34, 60)
)

3. 外层为可变列表(若后续需修改外层)

如果确实需要外层是可修改的MutableList,可以用mutableListOf直接初始化,或者给ArrayList传入一个集合参数:

// 用mutableListOf直接创建可变列表
val mutableList: MutableList<ArrayList<Int>> = mutableListOf(
    arrayListOf(1, 3, 5, 7),
    arrayListOf(10, 11, 16, 20),
    arrayListOf(23, 30, 34, 60)
)

// 用ArrayList构造器接收集合参数
val arrayList: ArrayList<ArrayList<Int>> = ArrayList(
    listOf(
        arrayListOf(1, 3, 5, 7),
        arrayListOf(10, 11, 16, 20),
        arrayListOf(23, 30, 34, 60)
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:50:25