可能是重复问题:
在Java中覆盖equals和hashCode方法
如果我有
class A {
int x = 1;
}
...
A a1 = new A();
A a2 = new A();
a1.equals(a2);
如果我比较两个A的实例,而没有覆盖equals方法,我会得到预期的结果吗?
可能是重复问题:
在Java中覆盖equals和hashCode方法
如果我有
class A {
int x = 1;
}
...
A a1 = new A();
A a2 = new A();
a1.equals(a2);
如果我比较两个A的实例,而没有覆盖equals方法,我会得到预期的结果吗?
if a1.equals(a2)
it is mandatory that a1.hashcode() == a2.hashcode()
if a1.hashcode() == a2.hashcode()
it is not mandatory that a1.equals(a2)
我猜这已经是一天足够处理的数据了 :)
equals
的默认实现是测试变量是否引用同一对象。如果这不是您想要的,那么您需要覆盖equals
。当您覆盖equals
时,通常需要覆盖hashcode
以便该对象可用于哈希表(或其他使用哈希码的数据结构)。