Обновление: я не совсем понимаю, что означает ваша правка о Iterable
s или ошибка в вашем комментарии, но вот полный рабочий пример с String
s и Float
s:
val map1: Map[Int, Map[String, Float]] = Map(
1 -> Map("key1" -> 1.0F),
2 -> Map("key2" -> 2.0F),
3 -> Map("key3" -> 3.0F))
val map2: Map[Int, Map[String, Float]] = Map(
1 -> Map("key11" -> 11.0F),
3 -> Map("key33" -> 33.0F),
4 -> Map("key44" -> 44.0F),
5 -> Map("key55" -> 55.0F))
val map3: Map[Int, Map[String, Float]] = for {
(k, v1) <- map1
v2 <- map2.get(k)
} yield (k, v1 ++ v2)
Обновление в ответ на ваш вопрос ниже: не имеет большого смысла иметь список карт, каждая из которых содержит одно отображение.Вы можете очень легко объединить их в одну карту, используя reduceLeft
:
val maps = List(
Map(1216 -> Map("key1" -> 144.0F)),
Map(1254 -> Map("key2" -> 144.0F)),
Map(1359 -> Map("key3" -> 144.0F))
)
val bigMap = maps.reduceLeft(_ ++ _)
Теперь у вас есть одна большая карта целых чисел с картами строк и с плавающей точкой, которую вы можете включить в мой ответ выше.*