什么问题/陷阱,必须重写时,必须考虑equals和hashCode?
equals和hashCode方法必须一致,这意味着当两个对象根据equals方法相等时,它们的hashCode方法应该返回相同的哈希值.
如果我们不覆盖hashCode()方法,Java将返回唯一的哈希代码.
class HashValue {
int x;
public boolean equals(Object oo) {
// if(oo instanceof Hashvalue) uncommenting ths gives error.dunno why?
// :|
HashValue hh = (HashValue) oo;
if (this.x == hh.x)
return true;
else
return false;
}
HashValue() {
x = 11;
}
}
class Hashing {
public static void main(String args[]) {
HashValue hv = new HashValue();
HashValue hv2 = new HashValue();
System.out.println(hv.hashCode());
System.out.println(hv2.hashCode());
if (hv.equals(hv2))
System.out.println("EQUAL");
else
System.out.println("NOT EQUAL");
} …Run Code Online (Sandbox Code Playgroud)