如何在Kotlin中初始化nxm的List<List<String>>矩阵?
如何初始化Kotlin的字符串类型矩阵(
List<List<String>>) 你代码的问题主要有两点:
- 类型不兼容:
Array(row) { StringArray(col) }生成的是Array<StringArray>类型,和你需要的List<List<String>>不属于同一类型体系,数组无法直接赋值给List,必须做类型转换。 - 字符串数组创建方式错误: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
相关产品推荐
相关产品推荐

