Scala:序列差异

zor*_*ork 2 scala set difference

找到两个序列A和B的差异(补码)D的最佳方法是什么,其中D = A-B是属于A但不属于B的所有对象的序列.例如:

val A = Seq((1,1), (2,1), (3,1), (4,1), (5,1))
val B = Seq((1,1), (5,1))
Run Code Online (Sandbox Code Playgroud)

要得到:

val D = Seq((2,1), (3,1), (4,1))
Run Code Online (Sandbox Code Playgroud)

用B元素过滤A及其子集似乎不是"长"序列的有效解决方案.还有其他想法吗?

jar*_*daf 7

你可以使用collection.SeqLike.diff方法:

scala> val A = Seq((1,1), (2,1), (3,1), (4,1), (5,1))
A: Seq[(Int, Int)] = List((1,1), (2,1), (3,1), (4,1), (5,1))

scala> val B = Seq((1,1), (5,1))
B: Seq[(Int, Int)] = List((1,1), (5,1))

scala> val D = A diff B
D: Seq[(Int, Int)] = List((2,1), (3,1), (4,1))
Run Code Online (Sandbox Code Playgroud)