Scala:按键两组的差异

时间:2015-10-26 18:30:28

标签: scala set diff

我有两组<div class="col-md-4"> <select class="form-control" ng-model="newLink.groupNo" name="groupNo" id="groupNo" ng-options="t.value as t.text for t in metaData.spGroups"></select> </div>对:

(k,v)

如何通过键找到这两组的差异,得到:

val x = Set((1,2), (2,10), (3,5), (7,15))
val y = Set((1,200), (3,500))

任何快速简单的解决方案?

3 个答案:

答案 0 :(得分:3)

val ym = y.toMap
x.toMap.filterKeys(k => !(ym contains k)).toSet

设置没有键,地图做。所以你转换成地图。然后,您无法在地图上创建差异,但您可以过滤密钥以排除您不想要的密钥。然后你就完成了转换回Set。 (这不是最有效的方法,但它并不坏,写起来也很容易。)

答案 1 :(得分:2)

val keys = y.map(_._1).toSet成为x中不能作为键出现的键组(对中的第一个元素);从而

for ( p <- x if !keys(p._1) ) yield p

以及

x.collect { case p@(a,b) if !keys(a) => p }

x.filter ( p => !keys(p._1) )
x.filterNot ( p => keys(p._1) )

答案 2 :(得分:0)

你可以尝试这个:

 x filter{ m => y map{_._1} contains m._1} toSet