【发布时间】:2016-10-23 07:42:51
【问题描述】:
最近,我参加了一次面试,面试官问了我这个问题。
HashMap 一次可以发生多少次重新散列?两次?还是N次? [每次添加(阈值+1)个元素时]
我知道,当地图已满时,很可能我们做错了什么。
我承认我无法给出满意的答案。谁能告诉我回答这些问题的方法。
或者,面试官到底在寻找一个令人信服的答案?
以下是我在提出这个问题之前提到的一些 SO 问题。
https://stackoverflow.com/a/28811708 “当映射中的元素数量达到阈值时,对哈希映射进行重新散列” HashMap 的负载因子为 0.75,默认初始容量值为 16。一旦元素数量达到或超过 12 个元素容量重新散列地图发生。
当哈希图中的条目数超过负载因子和当前容量的乘积时,哈希图被重新哈希(内部数据结构被重建),使得哈希图大约有两倍的桶数。 当您重新散列并将所有内容移动到新位置(存储桶等)时,旧元素也会再次重新散列并根据其新哈希码存储在新存储桶中。分配用于存储元素的旧空间被垃圾回收。
【问题讨论】: