【发布时间】:2018-02-18 18:43:17
【问题描述】:
作为一般规则,默认负载系数 (.75) 在时间和空间成本之间提供了良好的折衷。较高的值会减少空间开销,但会增加查找成本(反映在 HashMap 类的大多数操作中,包括 get 和 put)。
我不知道如何将负载因子增加到 1,增加查找时间
例如:- 初始容量为 16,负载因子为 1,然后在大小达到 16 * 1 = 16 后调整到 32。现在,如果我输入任何新条目,查找时间将如何 如果负载因子为 0.75(在这种情况下,hashmap 的大小将调整为 2)
正如这个答案所说What is the significance of load factor in HashMap?,空闲桶的数量越少, 碰撞的可能性。
我不确定空闲桶的数量与碰撞几率的关系。
据我了解,桶是根据关键对象的哈希码决定的。如果它与桶中的一些已经关键的对象相同,那么只有碰撞的机会,否则它将进入不同的桶(不在可用的桶中)。那么为什么碰撞与免费存储桶有关?您的意思是说,即使 hashcode 不同并且 hashmap 已满,它也会尝试将其放入现有存储桶中?
它不与What is the significance of load factor in HashMap? 重复。我在问那个链接中没有回答的具体点
【问题讨论】: