You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala 2.12 如何基于两个Map关联生成第三张目标Map

Scala 2.12 两个Map关联匹配实现方案

你可以直接使用flatMap实现需求,这是最简写法,会自动过滤匹配不到的条目:

val t1=Map("K1"->"tempV1" , "K2"->"tempV2" , "K3"-> "tempV3","K4"->"tempV4")
val t2=Map("tempV1"->"V1" , "tempV2"->"V2" , "tempV3"-> "V3","someV4"->"V4")

val result = t1.flatMap { case (k, v) =>
  t2.get(v).map(k -> _)
}
// 输出:Map(K1 -> V1, K2 -> V2, K3 -> V3)

实现逻辑说明

  • t2.get(v) 会根据t1的value在t2中查找对应的key,返回Option类型:匹配到对应值返回Some(目标值),匹配不到返回None
  • flatMap会自动丢弃None条目,将Some包裹的元组直接收集为新的Map

其他可选写法

如果你偏好显式过滤的写法,可以用collect实现:

val result = t1.collect {
  case (k, v) if t2.contains(v) => k -> t2(v)
}

如果需要保留t1所有key,匹配不到的给默认值,可以用map加getOrElse:

val result = t1.map { case (k, v) =>
  k -> t2.getOrElse(v, "默认值")
}
// 输出:Map(K1 -> V1, K2 -> V2, K3 -> V3, K4 -> 默认值)

内容的提问来源于stack exchange,提问作者byomjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:15:02