2个list 如果hash值一样,能证明他们2个一定相等吗

2个list 如果hash值一样,能证明他们2个一定相等吗

从底层给你分析下为什么 不一定相等

hashCode是所有Java对象的固有方法,如果不重载的话,返回的实际上是该对象在jvm的堆上的内存地址,而不同对象的内存地址肯定不同,所以这个hashCode也就肯定不同了。如果重载了的话,由于采用的算法的问题,有可能导致两个不同对象的hashCode相同。


 

只是这种概率性很小很小,就像密文一样,可能两个不同的原文加密后得到同一个密文。

底层原理就不和你说了,你知道用的Hash就行。我给你解释下Hash算法,Hash算法是对数据进行散列变换,散列变化算法有很多的,也可以自定义的,按照映射关系,分为一对一(比如直线方程),一对多(圆),多对一,多对多等。 你可以把Hash理解为变换后的函数值,Hash散列变换是一个多对一的值。也就是说变换前的每一个数值,一定对应一个变换后的Hash值,但是变换后的Hash值,可能对应多个变换前的数值。

比如函数y=X^2+1 ,y=2的解有X=+1或者X=-1  所以在Hash变换中,可能出现不同的原数值出现同一个Hash值,虽然概率比较低。

不能,有可能会存在hash值相同

hash函数,底层也是通过运算最后得到哈希码的。不可能做到绝对的唯一

2个对象的值相等,他们的hashCode是一定相等;
2个对象的hashCode相等,他们的不一定相等

如果你满意我的回答,请点采纳。你的认可是我们互助的动力。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632