在Scala中交叉并合并/连接两个映射
发布时间:2020-12-16 18:09:46 所属栏目:安全 来源:网络整理
导读:假设我有两张看起来像这样的地图. val m1 = Map(1 - "One",2 - "Two",3 - "Three")val m2 = Map(2 - 2.0,3 - 3.0,4 - 4.0) 我想基于键获取交集并返回表示合并值的元组.结果看起来像这样. Map(2 - (Two,2.0),3 - (Three,3.0)) 我想我可以诉诸类似的东西 val m
假设我有两张看起来像这样的地图.
val m1 = Map(1 -> "One",2 -> "Two",3 -> "Three") val m2 = Map(2 -> 2.0,3 -> 3.0,4 -> 4.0) 我想基于键获取交集并返回表示合并值的元组.结果看起来像这样. Map(2 -> (Two,2.0),3 -> (Three,3.0)) 我想我可以诉诸类似的东西 val merged = m1 collect { case (key,value) if m2.contains(key) => key -> (value,m2(key)) } 但是,没有“更惯用”的方式吗?我的直觉与Set的相似之处 val merged = m1.intersect(m2) 解决方法m1.keySet.intersect(m2.keySet).map(k => k->(m1(k),m2(k))).toMap // res0: Map[Int,(String,Double)] = Map(2 -> (Two,3.0)) 获取键的交集,然后将它们映射到新的Map. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |