【发布时间】:2015-06-18 19:51:43
【问题描述】:
当我尝试删除带有对象的 HashSet 时,hashset.contains(Object) 和 iterator.equals(Object) 始终为 false,即使它们应该为 true。
public boolean removeElement(Element element)
{
Iterator<Element> itr = elements.iterator();
while (itr.hasNext()) {
Element oldElement = itr.next();
if (itr.equals(new Element(element.eString, element.eInt, element.eBoolean))) {
itr.remove();
return true;
}
if (elements.contains(new Element(element.eString, element.eInt, element.eBoolean))) {
elements.remove(new Element(element.eString, element.eInt, element.eBoolean));
return true;
}
}
return false;
}
这是 Java 的一个特性、一个错误,还是我只是编码错误?这似乎是删除的合乎逻辑的解决方案,但它总是失败而不会引发任何错误。
【问题讨论】: