怎么重写hashCode的方法
为什么要重写hashCode方法? 我们应该先了解java判断两个对象是否相等的规则。 在java的集合中,判断两个对象是否相等的规则是: 如果不相等,认为两个对象也不相等 我们在equals方法中需要向下转型,效率很低,所以先判断hashCode方法可以提高效率 如何重写hashCode方法呢?
2、对于对象中的每一个关键域f (指equals 方法中考虑的每一个域),完成以下步骤: 3、返回result 值。 注:根据实践经验,在对ASCII 串的散列函数中,31 和37 是很好的散列因子。 示例代码:
首先,判断两个对象的hashCode是否相等
如果相等,则判断两个对象用equals运算是否相等
如果不相等,认为两个对象也不相等
如果相等,认为两个对象相等
result = 37 * result + c;public class Test {
private String s = null;
private int id = 0;
.
.
.
public int hashCode() {
int result = 17;
result = 37 * result + s.hashCode();
result = 37 * result + id;
return result;
}
}