我正在查看可變的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