gpt4 book ai didi

java - key 的 hash code 怎么取决于 Hash map 的容量

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:24:18 25 4
gpt4 key购买 nike

当 Hash map 以负载因子 (.75) 的比例填充时,如果超过该比例,容量将增加一倍并发生重新哈希,从而导致条目重新排列。

在这种情况下,为什么任何键的哈希码都取决于 HashMap 的容量,从而会发生重排?如果任何键的散列码是 10(比方说),当散列映射的容量发生变化时,它怎么会受到影响。

最佳答案

HashMap 的容量增长时,hashCode 不会改变。但是,当您必须将值为(例如)503 的 hashCode 映射到(例如)64 个桶的 HashMap 时,您可以使用模数运算符(即 hashCode() % 64),这会将您映射到存储桶 #55。

HashMap 的容量翻倍到 128 个桶时,对相同的 hashCode 应用取模运算符(这次 hashCode() % 128) 会将相同的 hashCode 映射到不同的存储桶(存储桶 #119)。

我稍微简化了答案。模数不直接应用于 hashCode。它应用于对 hashCode 应用另一个内部哈希函数的结果。但这并没有改变解释。

关于java - key 的 hash code 怎么取决于 Hash map 的容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31680266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com