我有以下 CSV
US;Americas
CA;Americas
FR;Europe
CH;Asia
...
我想要 Map of -> String, List,是否可以通過關聯或其他方式實作?
到目前為止,我有這個:
csv.split("\n").associate {
val (code, region) = it.split(";")
region to code
}
但這只是將區域映射到只有一個代碼,也嘗試過
region to listOf(code)
預期結果:
Americas -> US, CA, BR ...
Europe -> FR, IT, CH ...
Asia -> CH, JP, KR ...
uj5u.com熱心網友回復:
csv.split("\n").groupBy({ it.substringAfter(";") }) { it.substringBefore(";") }})
uj5u.com熱心網友回復:
associate如果鍵已經迭代,將替換該值。您可以改為使用groupBy來指定地圖的鍵和值
csv.split("\n").map {
val (code, region) = it.split(";")
region to code
}.groupBy({ it.first }) { it.second }
uj5u.com熱心網友回復:
除了 sidgate 的優秀答案,你也可以這樣做
csv.split("\n").groupBy({
it.split(";")[1]
}){
it.split(";")[0]
}
它避免了必須先創建地圖,但更頻繁地呼叫 split。我不確定在速度/效率方面什么會更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/375956.html
標籤:科特林
