Update hash collision.

This commit is contained in:
Yudong Jin 2023-01-30 04:00:50 +08:00
parent f103fdecc9
commit 15c798046a

View file

@ -16,7 +16,7 @@ comments: true
「负载因子 Load Factor」定义为 **哈希表中元素数量除以桶槽数量(即数组大小)**,代表哈希冲突的严重程度。 「负载因子 Load Factor」定义为 **哈希表中元素数量除以桶槽数量(即数组大小)**,代表哈希冲突的严重程度。
**负载因子常用作哈希表扩容的触发条件**。比如在 Java 中,当负载因子 $> 0.75$ 时则触发扩容,将 HashMap 大小扩充至原先 $2$ 倍。 **负载因子常用作哈希表扩容的触发条件**。比如在 Java 中,当负载因子 $> 0.75$ 时则触发扩容,将 HashMap 大小扩充至原先 $2$ 倍。
与数组扩容类似,**哈希表扩容操作的开销很大**,因为需要将所有键值对从原哈希表依次移动至新哈希表。 与数组扩容类似,**哈希表扩容操作的开销很大**,因为需要将所有键值对从原哈希表依次移动至新哈希表。
@ -76,8 +76,6 @@ comments: true
!!! note "工业界方案" !!! note "工业界方案"
Java 采用「链式地址」。在 JDK 1.8 之后HashMap 内数组长度 $> 64$ 时,长度大于 8 的链表会被转化为「红黑树」,以提升查找性能。 Java 采用「链式地址」。在 JDK 1.8 之后HashMap 内数组长度大于 64 时,长度大于 8 的链表会被转化为「红黑树」,以提升查找性能。
Python 采用「开放寻址」。字典 dict 采用的是随机探测,即使用伪随机数来探测。
Python 采用「开放寻址」。字典 dict 使用伪随机数进行探测。