Implementation of Hashcode for custom class in Java
Possible Duplicate:
Overriding equals and hashCode in Java
号
我应该为自定义类人员实现hashcode和equals。人员包括
firstname
lastname
号
我应该实现equals和hashcode,这样具有firstname和lastname的两个人应该为equals返回true,并且应该被hashmap接受。我已经实现了这样的个人类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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); } } |
这里的hashcode实现是否正确?即使我得到了预期的结果,我还是想知道这个实现是否正确?
equals方法有一个小问题,因为如果obj为空或不是
1 2 | if(obj==null || !(obj instanceof Person)) return false; |
这里有一个关于正确执行
Whenever a.equals(b), then a.hashCode() must be same as b.hashCode()
号
这是唯一重要的规则。除了这一条规则外,没有正确实施
根据该规则,您的代码似乎是正确的,因为如果
你的密码没问题。String有一个很好的哈希算法,只是添加哈希是在Java中对多个字符串进行散列的最有效方法。
关于