首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HashMap.get()是否检查多个哈希桶

HashMap.get()是否检查多个哈希桶
EN

Stack Overflow用户
提问于 2016-03-10 20:40:51
回答 1查看 161关注 0票数 1

因此,例如,我们对所有自定义对象= 2(in bits =..10)的哈希值非常低。在相关的帖子中有这样一句话:"HashMap使用2的幂,因为你可以很容易地通过hashCode & MASK where MASK = 000....111来选择桶,其中1的数量==当前的幂2用于大小。“

因此,对于映射长度= 2,当大小为2时,我们有..10 & 01 = 0 -存储桶索引。对于大小= 4,我们将具有:..010 & 11 = 10(= 2dex) -大小为4的索引。对于大小= 8,我们将具有:..010 & 111 = 10(= 2dex) -同样对于大小为8。因此,在这个简单的情况下,对于相同的对象键,我们将有两个不同的存储桶。(一般来说,映射方法散列(Int hashCode)的作用相同-它可以为相同的对象散列生成不同的存储桶索引-取决于映射的大小-以处理低位上的冲突)。当你在map上执行get()时--它是否遍历了所有这些不同的存储桶--或者不是?或者如何跟踪对象散列所需的所有存储桶?

Why hash method in HashMap

EN

回答 1

Stack Overflow用户

发布于 2016-03-10 20:43:45

每当调整HashMap的大小时,所有条目都会被重新散列,即,如果映射的新大小需要的话,它们将被移动到新的存储桶中。

因此,get()只需查找匹配搜索键的hashCode()和映射的当前大小的存储桶。

它是否遍历了适用于同一密钥的所有这些不同的存储桶?

在任何给定的时间点,对于给定的键,只有一个合适的存储桶(这取决于键的hashCode()HashMap的当前大小)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35916796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档