首页 > 解决方案 > 在 SCALA 中连接映射时删除重复键

问题描述

在我准备考试的时候,我遇到了这个问题。在谷歌上搜索但找不到答案。

当我们使用 ++ 运算符或 Map.++() 方法连接两个映射时,重复键将被删除。但是如果两个map中有重复的key但是key的值不同,会删除哪一个呢?

前任:

Map1 包含 key1->"hello"

Map2 包含 key1->"world"

这里的键名称相同但值不同,那么当 Map1 和 Map2 连接时,输出映射中的键值对是什么?

标签: scalafunctional-programmingmapsconcatenation

解决方案


如果您想明确覆盖/合并逻辑,您可以执行以下操作:

val map1 = Map("key1" -> "hello")
val map2 = Map("key1" -> "world")

val jointKeys = map1.keySet.intersect(map2.keySet)
val overlap = jointKeys.map(key => (key -> map2(key))).toMap // or use whatever custom override/concatenate logic instead of this lambda
val merged = overlap ++ map1.filterKeys(jointKeys) ++ map2.filterKeys(jointKeys)

推荐阅读