主要采用了链地址法。具体来说:
这个改进使 Java 8 中的 HashMap 在处理哈希碰撞时更加健壮,尤其是在哈希表的负载因子(load factor)较高的情况下。哈希表的负载因子是键-值对数量与桶数量的比值,当负载因子过高时,哈希碰撞可能会频繁发生,导致性能下降。通过将链表转化为红黑树,Java 8 的 HashMap 能够更好地处理这种情况。
HashMap 的默认负载因子是 0.75
,默认的初始容量为 16
。初始容量是指 HashMap 在创建时的初始桶数量。负载因子用于确定何时触发扩容操作。
负载因子 0.75
意味着当 HashMap 中的元素数量达到当前容量的 75%
时,HashMap 将自动进行扩容操作,以保持性能。这是一个平衡的值,通常在性能和内存占用之间提供了合理的折中。
HashMap 的容量总是2的幂,这有助于哈希值与桶的索引之间的关系更加高效。因此