我有以下java类:
public class Person{
String name; //a unique name
Long DoB; //a unique time
.
.
.
@Override
public int hashCode(){
return name.hashCode() + DoB.hashCode();
}
}我的hashCode方法正确吗(也就是说,它会返回所有组合的唯一数目吗?)
我有种感觉我在这里漏掉了什么东西。
发布于 2014-11-26 15:25:34
您可能还想使用一些更流畅、更不防弹的东西,比如谷歌番石榴。
@Override
public int hashCode(){
return Objects.hashCode(name, DoB);
}
@Override
public boolean equals(Object o) {
if ( this == o ) {
return true;
}
if ( o == null || o.getClass() != Person.class ) {
return false;
}
final Person that = (Person) o;
return Objects.equal(name, that.name) && Objects.equal(DoB, that.DoB);
}编辑:
IntelliJ IDEA和Eclipse可以生成更高效的hashCode()和equals()。
发布于 2014-11-26 15:15:08
你可以让java.util.Arrays为你这么做:
return Arrays.hashCode(new Object[]{ name, DoB });发布于 2014-11-26 15:15:51
除了显而易见的,也就是,您可能也希望实现equals方法.
int溢出的风险很小https://stackoverflow.com/questions/27152566
复制相似问题