提问人:Travis Parks 提问时间:7/23/2016 最后编辑:Travis Parks 更新时间:7/23/2016 访问量:764
Scala:设置更新集合的操作?
Scala: Set operations that update the collection?
问:
我正在查看可变类,并看到 、 、 等。所有这些集合操作都会创建一个新的 .我很好奇是否有办法更新而不是创建一个新的。否则,我必须从切换到,或者我必须跟进其他步骤。Set
union
intersect
diff
Set
Set
val
var
如果我不清楚,请考虑.NET的类。它有 ,并且修改集合。而 LINQ 扩展方法,并创建新的集合。我希望找到与“With”变体等效的东西。HashSet
IntersectWith
ExceptWith
UnionWith
Intersect
Except
Union
下面是一种从头开始重建集合的低效方法:
val temp = original.diff(other)
original.clear()
original ++= temp
显然,这样做会更有效:
for (value <- other if original.contains(value)) {
original.remove(value)
}
答:
2赞
Chris Shain
7/23/2016
#1
请参见:http://docs.scala-lang.org/overviews/collections/sets.html#operations-in-class-mutableset
例如:
添加: xs += x 添加元素 x 以将 xs 设置为副作用和 返回 xs 本身。
因此,只需忽略返回的值即可。该集应就地更新。
评论
0赞
Travis Parks
7/23/2016
想象一下,我想取一个,以便原始文件不再包含另一个集合中的值。原始集合应缩小。我需要找到需要删除的元素,然后将它们从原始集合中移除。以后?diff
Set
-=
2赞
Chris Shain
7/23/2016
好吧,这不是你问的:-)您可以设置一系列项目,这些项目应该具有您想要的效果。 对于不在集合中的项目,应该没有影响。-=
-=
评论
var
val
val
var
val