Kotlin嵌套MutableList添加元素报错:IndexOutOfBoundsException
索引越界异常的原因与修复
错误原因
你初始化的totalList是一个空的MutableList<MutableList<Int>>,里面没有任何子列表。当循环执行到totalList[i].add(element)时,totalList的长度为0,根本不存在索引i对应的元素(哪怕i=0也不行),所以直接触发java.lang.IndexOutOfBoundsException。Kotlin的可变列表不会自动为不存在的索引创建元素,必须手动初始化子列表。
修复方案
方案一:提前创建子列表(推荐)
在遍历i的循环中,先往totalList里添加一个空的子列表,再向这个子列表中添加元素:
val totalList = mutableListOf<MutableList<Int>>() fun main() { for (i in 0..15) { // 先添加空的子列表到totalList val subList = mutableListOf<Int>() totalList.add(subList) for (j in 0..10) { // 替换为你的element计算逻辑 val element = i * j subList.add(element) } } }
方案二:动态补全子列表
如果i的范围不确定或不连续,可以在访问totalList[i]前检查列表长度,不足时补充空列表:
val totalList = mutableListOf<MutableList<Int>>() fun main() { for (i in 0..15) { // 确保totalList的长度足够覆盖当前i的索引 while (totalList.size <= i) { totalList.add(mutableListOf()) } for (j in 0..10) { // 替换为你的element计算逻辑 val element = i * j totalList[i].add(element) } } }
内容的提问来源于stack exchange,提问作者vad070
相关产品推荐
相关产品推荐

