可能重复:
在Java中覆盖equals和hashCode
我应该为Custom class Person实现hashcode和equals.人包括
名字
姓
我应该实现equals和hashcode,这样两个firstname和lastname的人应该为equals返回true,并且应该被Hashmap接受.我已经像这样实现了Person类:
public class Person {
String firstname;
String lastname;
public Person(String firstname, String lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return firstname.hashCode()+lastname.hashCode();
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
Person u=(Person) obj;
return u.firstname.equals(firstname) && u.lastname.equals(lastname);
}
}
Run Code Online (Sandbox Code Playgroud)
这里Hashcode的实现是否正确?即使我得到了预期的结果,我想知道这个实现是否正确?
equals方法存在一个小问题,因为如果obj为null或不是a Person,它将引发异常,因此您应在equals的顶部添加以下内容:
if(obj==null || !(obj instanceof Person))
return false;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14713 次 |
| 最近记录: |