java – HashMap实现问题
发布时间:2020-12-15 08:34:46 所属栏目:Java 来源:网络整理
导读:HashMap包含一个哈希表,它是一个包含值的数组 据我所知,哈希表有一个初始大小,但是在多次调用put()之后它会增加(取决于加载因子) 无论如何我想知道如何在更改哈希表的大小后找到一个值,因为我知道为了计算特定键的代码,你可以使用表的大小 例如key * prime%
HashMap包含一个哈希表,它是一个包含值的数组
据我所知,哈希表有一个初始大小,但是在多次调用put()之后它会增加(取决于加载因子) 无论如何我想知道如何在更改哈希表的大小后找到一个值,因为我知道为了计算特定键的代码,你可以使用表的大小 例如key * prime%size 那么它是怎样工作的? 解决方法
Visage一般回答了这个问题:根据键计算的哈希值通过以模块的实际大小为基础进行扩展来映射到桶中,并且在调整地图大小时,所有元素将再次分布在新的桶范围内.
然而,从Java 1.4开始,幕后发生了一些值得了解的事情.首先,在传统的哈希映射中,大小理想情况下是素数,因为这有助于在桶的范围内更均匀地分布元素.但是,在Java 1.4 HashMap中,大小始终是2的幂!这将使标准分布表现得非常糟糕 – 但是,在此实现中,使用非常快速的算法在内部重新散列哈希值以平滑分布. Java专家时事通讯中的更多详细信息,问题54和54b. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |