java中的hashcode
一般重写equals最好重写hashCode方法,并且产生hashCode使用的对象,一定要和equals方法中使用的一致例如equals中用的是employee的id 那么hashCode也用this的id。
如果判断对象相等了,那么他们的hashCode也一定要相等。
但是如果两个相同的类是不同方式得到的,那么他们的hashCode也肯定不相等,所以hashCode最好是返回这个类里面一个属性的值,我这里例子中用的id的hashCode
至于hashCode中的17 31 只是一个素数,直接返回this.getId().hashCode();也是可以的。在网上看说是为了避免重复,还不知道为什么...
@Override
public boolean equals(Object object) {
if(this == object){
return true;
}
if(!(object instanceof Employee)) {
return false;
}
Employee employee= (Employee)object;
if(this.getId().equals(employee.getId())){
return true;
}
return false;
}
@Override
public int hashCode() {
//这个类的hashcode其实就是这个类的id*31*17的hashcode
int result = 17;
result = 31 * result + this.getId().hashCode();
return result;
}
本文出自 “summit” 博客,谢绝转载!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。