scala - 在 SCALA 中连接映射时删除重复键
问题描述
在我准备考试的时候,我遇到了这个问题。在谷歌上搜索但找不到答案。
当我们使用 ++ 运算符或 Map.++() 方法连接两个映射时,重复键将被删除。但是如果两个map中有重复的key但是key的值不同,会删除哪一个呢?
前任:
Map1 包含 key1->"hello"
Map2 包含 key1->"world"
这里的键名称相同但值不同,那么当 Map1 和 Map2 连接时,输出映射中的键值对是什么?
解决方案
如果您想明确覆盖/合并逻辑,您可以执行以下操作:
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)
推荐阅读
- html - 使用 tabview 替换组件
- blockchain - 将以太坊资产原子交换到侧链需要什么?
- c++ - 应该能够内联函数的虚拟调用吗?
- python - 无法正确配置 Django 以使用鼻子测试运行测试
- javascript - 使用 jQuery AJAX 上传非 pdf 文件会导致问题
- graphql - 无法在类型“用户”graphql 上查询字段“密码”
- android - 多按钮点击事件
- scala - 为什么 pureconfig 找不到我的隐式读者?
- react-native - 从数组中删除特定项目 - 反应原生
- python - 如何处理读取、提取和保存具有 Angular 客户端和 Django 服务器的超大 csv 或 excel 数据