1.介绍
二次散列(Double Hashing)是一种解决哈希冲突(hash collision)的方法 ,是的,它正是在发生哈希冲突时用到的 ,而且是一种非常经典、效果很好的开放定址法(Open Addressing)。
二次散列 = 用两个不同的哈希函数
当第一次哈希定位的位置发生冲突时,用第二个哈希函数来决定"下一次探测的步长"。
// 第 i 次探测位置是,i从0开始计数:
index_i = (h1(key) + i * h2(key)) % N
2.常见的哈希冲突解决方案

二次散列能有效避免 Primary Clustering(主聚集)
若忘记了设置key,导致key都是0,开启二次散列会有助于减少冲突吗?
不会,本质上没有任何帮助,甚至可能更糟。不同 key → 不同的 h2(key) → 不同的探测路径。