兩組差異我有兩套(k,v)
雙:斯卡拉:通過關鍵
val x = Set((1,2), (2,10), (3,5), (7,15))
val y = Set((1,200), (3,500))
如何找到鑰匙這兩組的差異,得到:
Set((2,10),(7,15))
任何快捷簡單解決方案
兩組差異我有兩套(k,v)
雙:斯卡拉:通過關鍵
val x = Set((1,2), (2,10), (3,5), (7,15))
val y = Set((1,200), (3,500))
如何找到鑰匙這兩組的差異,得到:
Set((2,10),(7,15))
任何快捷簡單解決方案
val ym = y.toMap
x.toMap.filterKeys(k => !(ym contains k)).toSet
套沒有鑰匙,地圖做。所以你轉換成地圖。然後,您不能在地圖上創建差異,但可以過濾這些鍵以排除不想要的。然後你完成保存轉換回Set
。 (這不是最有效的方式,但它不壞,而且寫起來很容易。)
讓val keys = y.map(_._1).toSet
是不可能作爲x
中的關鍵字出現的一組鍵(該對中的第一個元素)因此
for (p <- x if !keys(p._1)) yield p
以及
x.collect { case [email protected](a,b) if !keys(a) => p }
和
x.filter (p => !keys(p._1))
x.filterNot (p => keys(p._1))
你可以試試這個:
x filter{ m => y map{_._1} contains m._1} toSet