Hashcode相同但是equals不同的例子

 我来答
户如乐9318
2022-07-01 · TA获得超过6662个赞
知道小有建树答主
回答量:2559
采纳率:100%
帮助的人:140万
展开全部

大家都知道 equals() 相同时 hashcode 必须相同 但是 hashcode 相同并不一定 eqauls
但是具体的例子还真没看过
我们可以看到String 的 hashcode() 方法如下

这里我用我的姓的拼音来演示下 马(Ma)
在Ascii表中我们可以找到 M 和 a 和编码分别是 77 66
这样算的就是 (31*0+77)*31+66
数据有点少看不出来规律 再加上我的名 林(Lin) 76 69 110
这样算起来就是

这样我们就可以总结出来规律啦

其中的(n-*)代表根次方

这样我们就可以看出来了 如果构造相邻俩个最后的和一样
我们设比较的两个字符串的编码形式为 (x1)(y1) (x2)(y2)
他们俩只有中间俩个字符的编码不一样 那么怎么分别设置这两个字符串才能让他们的编码最后相同呢
经过一番高考之前的我附身 我们可以得到以下的等式

最最重要的是

也就是相邻的两位如果前边的编码差 1 后边的两个的编码就要差 -31*1

俩个实例吧 还是上边的我的大姓 Ma
有哪个字符串是和 M(77)a(97) Hashcode相同的呢
其中一个结果竟然为 NB (敲黑板) N(78)B(66) 看起来我们这个姓比较厉害了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式