我已经覆盖了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();
}
答案 0 :(得分:7)
您的equals
方法未覆盖Object.equals(object)
,因为它需要Person
作为参数。
要避免此问题,请在覆盖方法时添加@Override
注释
这样,如果参数设置错误,您将收到错误。
答案 1 :(得分:0)
重复人物对象在等效时是否被添加,或者人物对象在不重复时被添加,然后被修改以使其重复?后一种情况没有为java.util.Set。
定义RC