Scala中可变HashSet类中的Update方法

时间:2016-01-28 23:17:14

标签: java scala collections hashset

Scala的可变集合中的HashSet类支持更新方法。

然而,名称update似乎违反直觉(至少对我来说)。从文档here中可以看出

  

此方法允许根据所包含参数的值在此集合中添加或删除元素elem。通常,可以使用以下语法:   set(elem)= true

我尝试在scala控制台上使用update。当我调用update(elem, true)而不是用新版本更新elem时,它只是在元素存在时什么也没做。

更新时(elem,false),它删除了元素。

我的问题是update方法的目的是什么,因为它不是updating任何

1 个答案:

答案 0 :(得分:2)

我认为更新是针对集合而不是集合中的元素(“更新”元素没有意义,它只对具有键值关系的集合有意义),以及事实上,如果你看一下源代码,这个方法会更新集合:

def update(elem: A, included: Boolean) {
  if (included) this += elem else this -= elem
}

所以基本上你可以使用included变量来告诉添加或删除元素,在你的情况下,添加两次相同的元素不会给你任何更新,因为一个集合不允许重复。< / p>

为什么会使用update代替addremove,这超出了我的理解范围。