也就是说,我正在寻找一个标准或准标准(Apache Commons、Guava 等)库函数来有效地生成这个:
def f[T](oldSet: Set[T], newSet: Set[T]): (Set[T], Set[T], Set[T]) = {
val removed = oldSet.diff(newSet)
val kept = oldSet.intersect(newSet)
val added = newSet.diff(oldSet)
(removed, kept, added)
}
显然这并不难写,而且我确信我可以在不费力的情况下做出或多或少的最佳实现,但是对我来说,这种需要经常出现,令我感到困惑的是,没有似乎不是一个众所周知的库函数可以做到这一点。我错过了什么,还是它真的不存在?
编辑:对于那些向我指出 Scala 的标准 intersect 和 diff 函数及其等效运算符的人,我很欣赏这个想法,但我已经了解这些,正如您从我在上面的示例中使用它们的事实中看到的那样。我正在寻找一个标准库函数,它在功能上等同于上面定义的函数 f(),并且比上面定义的函数 f() 更高效。
最佳答案
Scala标准库中没有这样的函数。但是,以“困难的方式”执行此操作仅比以“有效的方式”执行速度慢两倍左右,因此我建议不要担心它。
(a 分区 b
可用于生成 (a & b, a diff b)
。)
关于scala - 给定集合 A 和 B,是否有标准库函数来生成 3-ple(A - B、交集、B - A)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538967/