校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > equals、hashCode()
题目

下面论述正确的是()?

A.如果两个对象的hashcode相同,那么它们作为同一个HashMap的key时,必然返回同样的值

B.如果a,b的hashcode相同,那么a.equals(b)必须返回true

C.对于一个类,其所有对象的hashcode必须不同

D.如果a.equals(b)返回true,那么a,b两个对象的hashcode必须相同

解答

正确答案是 D

A:在hashmap中,key值是不可能重复的,由hashCode和equals方法共同判断key值是否相等。即使两个对象的hashCode相同相等,也不能说他们的key值相等。

B和D:如果x.equals(y)返回true,那么这两个对象的hashCode返回的整数结果必然相同。如果x.equals(y)返回false,则不一定;
反之,hashCode返回的值不相等,则equals方法返回值一定不相等。hashCode返回值相等,则不一定
C:hashCode的值是可以相同的。
C 8条回复 评论
南城以北是片海

放弃不难,但坚持一定很酷,加油,奥里给!

发表于 2022-07-29 22:00:00
0 0
媲美

整个看下来还是感觉迷迷糊糊的

发表于 2022-06-19 22:00:00
0 0
埃蒙迷路患者

这么久了终于弄明白这个问题

发表于 2021-09-09 11:30:00
0 0
令白敬亭疯狂的女人

D选项有问题。。。如果两个对象都是new出来的,但是两个对象的equal相等,这两个对象的hashcode难道相等吗???这个题全错。A,B一样,。。hashcode相等并不能说明值相等。C就更胡说了,如果是常量。比方说i=j=1;那么i.j的hashcode一样。。  

发表于 2018-10-11 19:37:38
0 0
*5673

如果equal方法被重写呢

发表于 2018-10-11 19:37:18
0 0
Lee

存放的键值对,如果放入不同的值,则会将原来的值替换掉,所以只会存放相同的值,但是反过来就不一定了。

发表于 2023-09-17 12:07:54
0 1
京巴

应该说的是Object,没有override equals方法

发表于 2023-09-17 12:07:51
0 1
不圆*

D 如果是string的话,两个字符串对象相等,hashcode也不一样吧?

发表于 2018-10-11 19:36:45
0 0