[英]Merge two maps into one
我必須映射。 一種是Map<String, Double>
,例如“USA, 55.87”。 其次是Map<String, String>
,如“USA, United States of America”。
我想把這張地圖變成Map<Result, Double>
。 其中Result
包含兩個字符串,例如“USA, United States of America”。 怎么做?
data class Result(
val abbreviation: String,
val name: String
)
fun main() {
val firstMap = mapOf("USA" to 12.34, "CAN" to 56.78, "MEX" to 90.12)
val secondMap = mapOf("USA" to "United States of America", "MEX" to "Mexico", "GON" to "Gondor")
val result = firstMap.keys.intersect(secondMap.keys).associate { Result(it, secondMap[it]!!) to firstMap[it] }
println(result)
}
firstMap.keys.intersect(secondMap.keys)
將為您提供兩個地圖之間共有的一組鍵,以防只有一個 map 而不是另一個。 associate()
構建一個Map
,其中向您傳遞了一個集合成員(在本例中為 map 鍵),並且您返回一個Pair
代表生成的Map
中的條目。
如果您有充分的理由相信兩個映射中的鍵將始終匹配,您可以執行以下操作:
data class Country(
val abbreviation: String,
val name: String
)
fun main() {
val firstMap = mapOf("USA" to 12.34)
val secondMap = mapOf("USA" to "United States of America")
print(firstMap.mapKeys { Country(it.key, secondMap[it.key] ?: error("Country ${it.key} not found in second map")) })
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.