Java HashMap如何确定将内容放在何处?
HashMap中的add方法如何确定键在HashMap中的位置?比如,如果我试图将S、T、A、C、K放入大小为10的HashMap中,它如何确定每个字母的去向?对象哈希代码的最低有效位用于选择一个bucket。注意,没有大小为10的java.util.HashMap这样的东西,大小必须是2的幂,以便可以屏蔽位以选择一个bucket。如果将10传递给构造函数,将得到一个包含16个bucket的HashMap 因此,为了清晰起见,将其减少到8位,如果S返回hashcode 123,java就可以了Java HashMap如何确定将内容放在何处?,java,hashmap,Java,Hashmap,HashMap中的add方法如何确定键在HashMap中的位置?比如,如果我试图将S、T、A、C、K放入大小为10的HashMap中,它如何确定每个字母的去向?对象哈希代码的最低有效位用于选择一个bucket。注意,没有大小为10的java.util.HashMap这样的东西,大小必须是2的幂,以便可以屏蔽位以选择一个bucket。如果将10传递给构造函数,将得到一个包含16个bucket的HashMap 因此,为了清晰起见,将其减少到8位,如果S返回hashcode 123,java就可以了
01111011 & 00001111 -> 00001011
然后把它放在桶11里
真正的散列映射还应用了一个二级散列函数,该函数将位向右移动,以确保在最低有效位中有具有一定熵的数据,这样即使它们的散列码函数不是很好,也有很好的机会均匀分布。对象散列码的最低有效位用于选择一个铲斗。注意,没有大小为10的java.util.HashMap这样的东西,大小必须是2的幂,以便可以屏蔽位以选择一个bucket。如果将10传递给构造函数,将得到一个包含16个bucket的HashMap 因此,为了清晰起见,将其减少到8位,如果S返回hashcode 123,java就可以了
01111011 & 00001111 -> 00001011
然后把它放在桶11里
真正的散列映射还应用了一个二级散列函数,该函数将位向右移动,以确保在最低有效位中存在具有一定熵的数据,这样即使它们的散列码函数不是很好,也有很好的机会均匀分布。对象的散列码方法它对其进行散列。我敢肯定,如果你在谷歌上搜索它,你会在hashtables等网站上找到一篇或三篇不错的维基百科文章。我不同意上一个问题中的内容是对这个问题的满意答案。Object的hashCode方法它会对它进行散列。我敢肯定,如果你用谷歌搜索,你会在hashtables等网站上找到一篇或三篇不错的维基百科文章。我不同意上一个问题中的内容是这个问题令人满意的答案。