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,至少沒有額外的依賴關係 –