我正在查看可变的Set
类,并参见union
,intersect
,diff
等。所有这些设置操作都会创建一个新的Set
。我很好奇,如果有更新Set
的方法,而不是创建一个新的。否则,我必须从val
切换到var
,否则我必须跟进其他步骤。Scala:设置更新集合的操作?
如果我不清楚,请考虑.NET的HashSet
类。它有IntersectWith
,ExceptWith
和UnionWith
修改集合。 LINQ扩展方法Intersect
,Except
和Union
创建新的集合。我希望找到与“With”变体相同的东西。
这里是一个低效率的做法,从头开始重新集合:
val temp = original.diff(other)
original.clear()
original ++= temp
显然,这将是更有效地做到这一点:
for (value <- other if original.contains(value)) {
original.remove(value)
}
你的意思是把'var'切换到'val'也许? :) – Alec
不,'val'到'var'。我想保持对同一个集合的同一个引用。我想* mutate *该集合,而不是将引用替换为新的集合。 –
我的不好。完全正确。一个'val'给一个可变集合。菜鸟的错误。 – Alec