0
我有一张地图定义如下。该键代表一个用户ID和值表示和AddressId。扭转地图,但使用值作为键,并使用键作为值
val m: Map[Int, List[Int]]
我想知道反向映射,这意味着每个列表中我要使它成为一个关键的每一个项目,和值是键的列表。
所以基本上对于每个AddressID我都会有一个UserID列表。
我该怎么做?
我知道我可以使用mapValues,但我需要以某种方式引用回密钥。
这样做不会创建列表:
m.map(k => (k._2, k._1))
的思考?
如果我有一个地图[长,将[龙]将这种变化的东西呢? –
@coolbreeze普通的Scala解决方案仍然可以工作 - 在'Vector'上的'flatMap'之后,你仍然得到一个'Vector [(Long,Long)]',但结果将是'Map [Int,List [Int]' ,所以你需要'mapValues'中的'.toSet'。 Scalaz/cats,IIRC,不允许对'Set'使用foldMap,至少没有额外的依赖关系 –