equals和hashcode的区别,hashcode的作用

时间:2017.10.23 发布人:lvzhi313305211

equals和hashcode的区别,hashcode的作用

已解决问题

谷歌lvzhi313305211用户在2017.10.23提交了关于“上海博物馆equals和hashcode的区别,hashcode的作用”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-03-02T02:29:19。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,千言万语,表达不了我的感激之情,我已铭记在心 !

希望以下的回答,能够帮助你。

第1个回答

用户名:cwillow  

equ来自als():反映的是对象或变量具体的值,即两个对内出加诗象里面包含的值--可能是对象的引用,也可能是值类型的值。

hashCode():计算出对象实例的哈希码,并返回哈希码,又称为散列函数。根类Object的hashCode()方法的计算依赖于对象实例的D(内存地址),故每个Obj问答ect对象的hashCode都是唯一的;当然,当对象所对应的类重写了hashCode()方法时,结果就截然不同了。
  歌波之所以有hashCode方法,是因为在批量的对象比较中,h短ashCode要比equals来得快,很多集合都用到了hashCode,复威受比如h**ashTable。

  两个obj,如果equals()相等,hashCode()一定音采械责相等。
  两个obj,如果hashCode()相等,equals()不一定相等(h**ash散列值有冲突的情况,虽然概率很低)。
所以:
  可以考虑在集合中,判断两个对象是否相等的规则是:
    第一步,如果hashCode()相等,则查看第二步,否则不相等;
    第二步,查看equa容波角ls()是否相等,如果相等,则两obj相等,否则还是不相等。

1、首先equals()和hashcode()这两个方法都是和绝从object类中继承过来的。

  equals()是对两个对象的地址值进行的比较(即比较引用是否相同)。

  hashCode()是一个本地方法,它的实现是根据本地机器相关的。

2、J**a语言对equals()的要求如下,这些要求是必须遵循的:

  A对胡扩周死掉衡殖三批降此称性:如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true”。

  B反射性:x.equals(x)必须返回是“true”。

  C类推性:如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true”。

  D一致性冲销仍往:如果x.equals(y)返回是“true”,只要x和y内容一直不变,不管你重复x.equals(y)多少次劳谓合校突跟烧,返回都是“true”。

  任何情况下,x.equals(**ll),永远返回是“false”;x.equals(和x不同类型的冲执对象)永远返回是“false”。

3、equals()相等的两个对象,hashcode()一定相等;

  反过来:hashcode()不等,一定能推出equals()也急约队应住题示不等;

  hashcode()相等,equals()可能相等,也可能不等。