首页 > 试题广场 >

hashCode()和equals()方法有什么联系?

[问答题]
请解释hashCode()和equals()方法有什么联系?
Java对象的eqauls方法和hashCode方法是这样规定的: ➀相等(相同)的对象必须具有相等的哈希码(或者散列码)。 ➁如果两个对象的hashCode相同,它们并不一定相同。
发表于 2019-05-02 00:57:45 回复(0)
更多回答
柠头像
equals 与 hashCode

前提: 谈到hashCode就不得不说equals方法,二者均是Object类里的方法。由于Object类是所有类的基类,所以一切类里都可以重写这两个方法。

原则 1 : 如果 x.equals(y) 返回 “true”,那么 x 和 y 的 hashCode() 必须相等 ;
原则 2 : 如果 x.equals(y) 返回 “false”,那么 x 和 y 的 hashCode() 有可能相等,也有可能不等 ;
原则 3 : 如果 x 和 y 的 hashCode() 不相等,那么 x.equals(y) 一定返回 “false” ;
原则 4 : 一般来讲,equals 这个方法是给用户调用的,而 hashcode 方法一般用户不会去调用 ;
原则 5 : 当一个对象类型作为集合对象的元素时,那么这个对象应该拥有自己的equals()和hashCode()设计,而且要遵守前面所说的几个原则。

发表于 2019-02-14 15:03:56 回复(0)

1、当覆盖了equals方法时,比较对象是否相等将通过覆盖后的equals方法进行比较(判断对象的内容是否相等)。

2、hashCode方法只有在set或map集合中用到

3、将对象放入到集合中时,首先判断要放入对象的hashCode值与集合中的任意一个元素的hashCode值是否相等,

如果不相等直接将该对象放入集合中。如果hashCode值相等,然后再通过equals方法判断要放入对象与集合中的

任意一个对象是否相等,如果equals判断不相等,直接将该元素放入到集合中,否则不放入。

发表于 2019-04-26 22:10:06 回复(0)
equals与hashcode的关系是: 两个对象在equals相等的情况下,hashcode有可能相等也有可能不相等, 而两个对象在hashcode不相等的情况下,equals也必定不相等。 理解equals的应用:它是用于用户在进行对比的时候,这个时候对比的是内容是否相等 理解hashcode的应用:例如set集合,它的不可重复,进行对比的便是hashcode是否相等,因此set集合实现了不可重复。
发表于 2019-05-10 22:59:53 回复(2)
1.equal()相等的两个对象他们的hashCode()肯定相等,也就是用equal()对比是绝对可靠的。 2.hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不是绝对可靠的。
发表于 2019-05-02 21:38:44 回复(0)
Java对象的eqauls方法和hashCode方法是这样规定的: ➀相等(相同)的对象必须具有相等的哈希码(或者散列码)。 ➁如果两个对象的hashCode相同,它们并不一定相同。
发表于 2019-04-26 20:46:59 回复(0)
Java的基类Object提供了一些方法 其中equals()方法用于判断两个对象是否相等 hashCode()方法用于计算对象的哈希码 equals()和hashCode()都不是final方法 都可以被重写(overwrite)
发表于 2019-04-26 15:41:15 回复(0)