簡體   English   中英

將兩張地圖合二為一

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM