当放入HashMap期间发生冲突时,地图是否已调整大小,或者是添加到该特定存储桶中列表的条目?
答案 0 :(得分:13)
当你说'碰撞'时,你的意思是相同的哈希码吗?哈希码用于确定要使用HashMap中的哪个存储桶,并且存储桶由具有相同哈希码的所有条目的链表组成。然后在返回或引导(get / put)之前比较条目的相等性(使用.equals())。
请注意,这是具体的HashMap(因为那是您询问的那个),以及其他实现,YMMV。
答案 1 :(得分:2)
可能发生 - 它取决于HashMap的填充率。
然而,通常情况下,它会被添加到该存储桶的列表中 - HashMap类的设计使得调整大小相对较少(因为它们更昂贵)。
答案 2 :(得分:1)
java.util.HashMap
的文档准确说明了地图调整大小的时间:
HashMap的一个实例有两个影响其性能的参数:初始容量和加载因子。
capacity 是哈希表中的桶数,初始容量就是创建哈希表时的容量。
加载因子衡量哈希表在其容量自动增加之前可以获得多长时间。
当哈希表中的条目数超过加载因子和当前容量的乘积时,哈希表重新哈希(即内部数据结构被重建)所以哈希表的桶数大约是桶的两倍。
默认初始容量为16,默认加载因子为0.75。您可以在地图的构造函数中提供其他值。
答案 3 :(得分:-1)
在达到负载系数时完成调整。
当放入HashMap期间发生冲突时,该条目将添加到该特定“桶”中的列表中。如果达到了加载因子,则会调整Hashmap的大小。