当前,我必须编写以下内容来更新Set中已包含的元素:
Set mySet= ...
Element e1 = new Element (...);
....
....
Element e2 = new Element (...);
\\e1 and e2 are different instances, but equals.
\\update the element contained into the Set
if (mySet.contains(e2)){
mySet.remove(e2);
myset.add(e2);
}
看起来不太好。还有其他选择吗?
最佳答案
Set是通过在对象上使用equals()来避免重复的数据结构;这也意味着彼此相等的两个对象被认为是完全等效的。也就是说,无论您使用的是Set中已有的版本还是新版本,您的代码都应相同。
如果要使用新值更新对象,那么显然不是这种情况(两个版本不能互相替换),然后应使用其他数据结构(例如Map),在此您可以轻松地覆盖值,在这种情况下,键甚至可以是对象本身)。
关于java - 为什么在Set接口(interface)上没有定义replace()方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2636660/