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

如何在Kotlin中初始化nxm的List<List<String>>矩阵?

如何初始化Kotlin的字符串类型矩阵(List<List<String>>)

你代码的问题主要有两点:

  1. 类型不兼容:Array(row) { StringArray(col) }生成的是Array<StringArray>类型,和你需要的List<List<String>>不属于同一类型体系,数组无法直接赋值给List,必须做类型转换。
  2. 字符串数组创建方式错误:Kotlin里只有IntArray、DoubleArray这类对应基本数据类型的专用数组,字符串作为引用类型,需要用Array<String>来创建,不存在StringArray这种写法。

下面是几种可行的解决方案:

方案1:初始化非空字符串矩阵(元素为空字符串)

如果需要矩阵内所有元素都是非空的String,可以给每个元素设置默认空字符串,再将数组转成List:

val row = 4
val col = 3
val board: List<List<String>> = Array(row) { 
    Array(col) { "" } // 每个位置初始化为空字符串
}.map { it.toList() } // 把内层Array转为List,外层Array同步转为List<List<String>>

方案2:初始化可空字符串矩阵(元素允许为null)

如果业务场景允许元素为null,可以用arrayOfNulls创建可空数组后转换:

val row = 4
val col = 3
val board: List<List<String?>> = Array(row) { 
    arrayOfNulls<String>(col) // 创建指定长度的可空字符串数组
}.map { it.toList() }

更简洁的直接创建List方式

不需要通过数组中转,直接用List的构造函数就能生成目标类型:

val row = 4
val col = 3
val board: List<List<String>> = List(row) { 
    List(col) { "" }
}

内容的提问来源于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 09:10:53