gpt4 book ai didi

java - HashMap 实现问题

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

HashMap 包含一个哈希表,它是一个保存值的数组

据我所知,哈希表有一个初始大小,但在多次调用 put() 后它会增加(取决于负载因子)

无论如何,我想知道在更改哈希表的大小后如何找到一个值,因为我知道为了计算特定键的 has 代码,您可以使用表的大小

例如key*prime%size

那么它是如何工作的呢?

最佳答案

Visage 概括地回答了这个问题:从键计算出的哈希值通过以映射的实际大小为模展开来映射到桶中,并且当调整映射大小时,所有元素再次分布到新的范围内桶。

但是,从 Java 1.4 开始,幕后发生了一些值得了解的事情。首先,在传统的 HashMap 中,大小最好是质数,因为这有助于将元素更均匀地分布在桶的范围内。然而,在 Java 1.4 HashMap 中,大小始终是 2 的幂!这会使标准分布表现得非常糟糕 - 然而,在这个实现中,散列值在内部使用非常快速的算法被重新散列以平滑分布。

Java 专家通讯中的更多详细信息,问题 5454b .

关于java - HashMap 实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3341678/

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