Object的hashCode()和equals()有什么关系吗?
为什么我不复写自己定义的某个类的equals方法 两个相同的对象就不能得到相同的hashCode值?
我自己复写equals就可以了。。。
这是为什么????
------解决方案--------------------应该木关系
------解决方案--------------------重写equals方法,必须也要重写hascode方法
------解决方案--------------------如果你不重写子类的方法。
那么调用方法的时候调用的就是他们父类Object类的这个方法。
源码里是这样的。
Java code
public boolean equals(Object obj) {
return (this == obj);
}
------解决方案--------------------
------解决方案--------------------
LZ想要进一步了解的话可以看看数据结构中的哈希表hashtable
hashtable实际上是一个Mapper(映射)KEY就是hashcodeVALUE就是对象的内容
所以不同对象的hashcode必须不同,否则就无法正确定位到对象
我们也可以认为hashcode是一个地址
------解决方案--------------------
hashCode()方法要与equals()方法一同覆盖。
当两个对象equals比较为true时候,这两个对象应该只有相同的hashCode()值
当两个对象equals比较为false时候,这两个对象应该具有不同的hashCode()值。