加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中反向/转置一对多地图

发布时间:2020-12-16 09:21:41 所属栏目:安全 来源:网络整理
导读:将地图[A,Set [B]]转换成地图[B,Set [A]]的最佳方法是什么? 例如,如何转一个 Map(1 - Set("a","b"),2 - Set("b","c"),3 - Set("c","d")) 进入 Map("a" - Set(1),"b" - Set(1,2),"c" - Set(2,3),"d" - Set(3)) (我正在使用不可变的集合,而我的真正的问题与字
将地图[A,Set [B]]转换成地图[B,Set [A]]的最佳方法是什么?

例如,如何转一个

Map(1 -> Set("a","b"),2 -> Set("b","c"),3 -> Set("c","d"))

进入

Map("a" -> Set(1),"b" -> Set(1,2),"c" -> Set(2,3),"d" -> Set(3))

(我正在使用不可变的集合,而我的真正的问题与字符串或整数无关.

解决方法

在aioobe和Moritz的帮助下:

def reverse[A,B](m: Map[A,Set[B]]) =
  m.values.toSet.flatten.map(v => (v,m.keys.filter(m(_)(v)))).toMap

如果您明确地调用contains:

def reverse[A,m.keys.filter(m(_).contains(v)))).toMap

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读