java八股文面试[java基础]——有没有可能两个不相等的对象有相同的hashCode

java八股文面试[java基础]——有没有可能两个不相等的对象有相同的hashCode_第1张图片

实例:Aa BB有相同的hashCode值。

java八股文面试[java基础]——有没有可能两个不相等的对象有相同的hashCode_第2张图片

查看String的hashCode源码可以看到:公式

java八股文面试[java基础]——有没有可能两个不相等的对象有相同的hashCode_第3张图片

 A的ASCII码是65 B是 66   

公式刚好 31*66 +66 = 2112 = 31*65+97

为什么重写了equals必须重写hashCode:

java八股文面试[java基础]——有没有可能两个不相等的对象有相同的hashCode_第4张图片

java八股文面试[java基础]——有没有可能两个不相等的对象有相同的hashCode_第5张图片

两个Test5对象实例相等(equals 返回true),但是放到HashSet中是两个。预期两个相同的放到Set集合中,应该只存在一个。

重写hashCode之后就变成了一个:

java八股文面试[java基础]——有没有可能两个不相等的对象有相同的hashCode_第6张图片

 知识来源:

【23版面试突击】有没有可能2个不相等的对象有相同的hashcode_哔哩哔哩_bilibili

你可能感兴趣的:(java八股文,java,面试,开发语言)