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

Kotlin中如何正确向列表的列表添加列表?解决引用重复问题

Kotlin 列表的列表添加元素问题解决

问题原因

你这段代码的核心问题是全程复用了同一个myList可变列表实例。每次外层循环只是往这个列表里追加元素,然后把该实例的引用直接塞进listOfList中。这意味着listOfList里的三个元素本质上都是指向同一个列表对象,最后打印时自然会显示这个列表最终的状态——也就是三次添加元素后的完整内容。

正确实现方式

如果你想实现预期的输出(每次外层循环后保存当前myList的状态,后续继续累加元素),可以在添加时存入当前列表的副本:

val myList = mutableListOf<Int>()
val listOfList = mutableListOf<List<Int>>()
for (i in 0..2) {
    for (j in 0..2) {
        myList.add(j)
    }
    // 添加当前列表的不可变副本,而非原引用
    listOfList.add(myList.toList())
}
println(listOfList)

运行后输出就是你预期的:

[[0, 1, 2], [0, 1, 2, 0, 1, 2], [0, 1, 2, 0, 1, 2, 0, 1, 2]]

如果你的需求是每次外层循环生成独立的小列表(即输出[[0,1,2],[0,1,2],[0,1,2]]),则可以每次外层循环新建一个myList实例:

val listOfList = mutableListOf<List<Int>>()
for (i in 0..2) {
    // 每次外层循环创建新的可变列表
    val myList = mutableListOf<Int>()
    for (j in 0..2) {
        myList.add(j)
    }
    listOfList.add(myList)
}
println(listOfList)

内容的提问来源于stack exchange,提问作者Tayeb Ahmad Omer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 04:24:11