scala outline
scala Map集合之间合并
需求:现有两个集合
val map1 = mutable.Map[String, Int](“a” -> 1, “b” -> 2, “c” -> 3)
val map2 = mutable.Map[String, Int](“a” -> 4, “b” -> 5, “c” -> 6)现需要将两个集合的元素进行合并,输出形式如下:
Map(b -> 7, a -> 5, c -> 9)
方法1:
def main(args: Array[String]): Unit = {
val map1 = mutable.Map[String, Int]("a" -> 1, "b" -> 2, "c" -> 3)
val map2 = mutable.Map[String, Int]("a" -> 4, "b" -> 5, "c" -> 6)
// 集合之间合并 选择fold 或者foldLeft 或者foldRight
val res: mutable.Map[String, Int] = map1.foldLeft(map2)((map2, kv) => { // kv属于map1
// 指定合并规则
val k: String = kv._1
val v: Int = kv._2
// 根据map1中元素的key,到map2中获取value
map2(k) = map2.getOrElse(k, 0) + v
map2
})
println(res)
}
方法2:
val res: mutable.Map[String, Int] = map1.foldLeft(map2) {
case (map2, (k, v)) => {
map2(k) = map2.getOrElse(k, 0) + v
map2
}
}