我必须要地图。一个是Map<String, Double>
,例如“ USA,55.87”。第二个是Map<String, String>
,例如“ USA,United States of America”。
我想将此地图转换为Map<Result, Double>
。其中Result
包含两个String,例如“ USA,United States of America”。该怎么做?
答案 0 :(得分:2)
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)
将为您提供两个地图之间共有的一组键,以防某些键仅在一个地图中而不在另一个地图中。 associate()
构建一个Map
,在其中您将获得一个集合成员(在本例中为映射密钥),然后您返回一个Pair
,代表所得Map
中的一个条目。
答案 1 :(得分:0)
如果您有充分的理由相信两个地图中的键将始终匹配,则可以执行以下操作:
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")) })
}