我的HashSet包含(有意义的等价)重复!

时间:2011-05-08 03:35:21

标签: java collections hashset

我已经覆盖了Person类中的hashCode()和equals()方法,以便将两个具有相同名称(String)的Person对象视为相等,但我的set仍包含两个具有相同名称的Person 。

这是我的Person类中的代码:

public boolean equals(Person aPerson) {
    Person p = (Person) aPerson;
    //Since name is a String, we can just use
    //the overridden equals() method to ask
    //one name if it's equal to the other
    //person's name.
    return getName().equals(p.getName());
}

public int hashCode() {
    //Strings also have an overridden hashCode() method
    //so we can just return the result of calling hashCode()
    //on the name (instead of the object!)
    return name.hashCode();
}

2 个答案:

答案 0 :(得分:7)

您的equals方法未覆盖Object.equals(object),因为它需要Person作为参数。

要避免此问题,请在覆盖方法时添加@Override注释 这样,如果参数设置错误,您将收到错误。

答案 1 :(得分:0)

重复人物对象在等效时是否被添加,或者人物对象在不重复时被添加,然后被修改以使其重复?后一种情况没有为java.util.Set。

定义

RC