哈希游戏平台一道关于哈希表的题目
哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏我再intellij上跑了每个put 后面表的所有key和value但是我没懂为什么是那样
请阐述:在哪一句执行以后,你认为应该是什么结果?为什么?实际却是什么结果。所以你不理解。
1)是:Husky 这个类的 hashcode 是 name.length,而不是 name。所以,在哈希表中,将首先以 name 的长度分组,name 的长度相同,则造成了哈希冲突,才会进一步比较具体的 name
2)是,当把一个元素存进哈希表以后,改变这个元素的 name,即使长度改变了,这个元素在哈希表中存储的位置不会跟着变。(哈希表没有实时更新,不会一遍一遍地扫描表内的元素,看这些元素是否发生了改变。)(所以,这样做是不安全的。)
也就是哈希值为 5 的元素里,存了一个 name 长度为 10 的元素。
此时,新加入了 jeterjeter 由于长度为 10,哈希值为 10,直接去哈希值为 10 的 bucket。在这里没有找到哈希冲突,直接加进去。
但是,map.put(b, 4),diana 可以正常找到,所以,哈希表变成了:
值得一提的是最后一个打印输出,查询 jeterjeter,此时会按照 长度为 10 去查(而不是 5),所以得到的结果是 3。
我知道result map也就是第二张图的最后一行 有两个 jeterjeter并且值都是3但是这里get里面传入了一个new Husky 不应该是新的对象吗为什么结果打印出来是3这个地方我也没有太明白
慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案