【发布时间】:2021-12-04 23:03:33
【问题描述】:
(这里是 Kotlin 新手)我有一个文本文件,其中的行如下所示:
1-1-1
1-1-2
1-1-3
2-1-1
2-1-2
etc.
我必须将这些数据转换为一个映射,其中键是前 2 个元素,值是与键匹配的第三个元素的列表。比如上面的记录会转化成这个JSON:
1-1: [1, 2, 3]
2-1: [1, 2]
etc.
我无法增加列表。这是一个简化版本,我卡在“其他”上:
fun main () {
val l1 = mutableListOf("1-1-1", "1-1-2", "1-1-3", "2-1-1", "2-1-2")
val m = mutableMapOf<String, List<Int>>()
for (e in l1) {
val c = e.split("-")
val key = "${c[0]}-${c[1]}"
if (m[key] == null) m[key] = listOf(c[2].toInt())
else println("How do I append to the list?")
}
println(m)
}
输出:
{1-1=[1], 2-1=[1]}
但我想要:
{1-1=[1, 2, 3], 2-1=[1, 2]}
谢谢(欢迎大家学习惯用形式!)
【问题讨论】:
-
下面的答案是正确的,但至于你缺少什么:你的List类型切换了,l1应该是只读List(listOf),第二个是map中的值,应该是 MutableList
。您可以使用 + 运算符进行附加,当然您也可以使用当前列表执行此操作,但这样做效率低下,因为它会创建一个新列表。
标签: kotlin