我想知道如何在Scala中合并地图。在斯卡拉,我如何合并地图如下?
val prevMap = Map(1-> Set("a"), 2-> Set("b"))
val newMap = Map(2-> Set("a","b"),1-> Set("c"))
val expected = Map(1->Set("a","c"), 2-> Set("a","b"))
基本上,预计地图newMap +添加了上一个新
感谢之间不同的密钥所有值
我想知道如何在Scala中合并地图。在斯卡拉,我如何合并地图如下?
val prevMap = Map(1-> Set("a"), 2-> Set("b"))
val newMap = Map(2-> Set("a","b"),1-> Set("c"))
val expected = Map(1->Set("a","c"), 2-> Set("a","b"))
基本上,预计地图newMap +添加了上一个新
感谢之间不同的密钥所有值
我不知道有该内置功能(毕竟,这取决于具体的Set
值类型)。这里是最紧凑的,我能够拿出(假设地图被称为a
和b
)
(a.keySet | b.keySet) map { k => k -> (a.getOrElse(k, Set.empty) | b.getOrElse(k, Set.empty)) } toMap
使用标准库,这样,
m1 ++ m2.map { case (k,v) => k -> (v ++ m1.getOrElse(k,Set())) }
考虑的++
第一次出现,用于追加地图。的++
右操作数中的关键值对被合并来自m1
组具有共同的键,则对于在m1
和m2
发生的任何键增强型中,操作者++
替换m1
密钥值对与m2
密钥值对; m1
中的键值对在m2
中未被保存。
的++
第二次出现表示并集方法。因此,仅在m2
中出现的这些键集合保持不变(与空集合设置联合)。