首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Object的hashCode()和equals()有什么关系吗?解决办法

2012-04-22 
Object的hashCode()和equals()有什么关系吗?为什么我不复写自己定义的某个类的equals方法两个相同的对象就

Object的hashCode()和equals()有什么关系吗?
为什么我不复写自己定义的某个类的equals方法 两个相同的对象就不能得到相同的hashCode值?
我自己复写equals就可以了。。。

这是为什么????

[解决办法]
应该木关系
[解决办法]
重写equals方法,必须也要重写hascode方法
[解决办法]
如果你不重写子类的方法。

那么调用方法的时候调用的就是他们父类Object类的这个方法。

源码里是这样的。

Java code
public boolean equals(Object obj) {    return (this == obj);}
[解决办法]
探讨

重写equals方法,必须也要重写hascode方法

[解决办法]
LZ想要进一步了解的话可以看看数据结构中的哈希表hashtable
hashtable实际上是一个Mapper(映射)KEY就是hashcodeVALUE就是对象的内容
所以不同对象的hashcode必须不同,否则就无法正确定位到对象
我们也可以认为hashcode是一个地址
[解决办法]
hashCode()方法要与equals()方法一同覆盖。
当两个对象equals比较为true时候,这两个对象应该只有相同的hashCode()值
当两个对象equals比较为false时候,这两个对象应该具有不同的hashCode()值。

热点排行