直接回答

哈希冲突的解决主要分两类:开放寻址法和链地址法。开放寻址在表内寻找下一个空槽(线性探测、二次探测、双重哈希);链地址法让每个桶挂一个链表或其他容器,冲突元素都放进桶里。此外还有再哈希、公共溢出区等较少用的方案。

展开解析

链地址法简单稳健,装载因子可以大于 1;Java HashMap 在链表长度超过 8 且表容量足够时把桶转红黑树,把单桶查询从 O(n) 降到 O(log n),防止哈希碰撞攻击。开放寻址所有元素都在数组里,缓存友好,但装载因子高时探测序列急剧变长,删除元素需打墓碑标记否则探测链断裂,一般要求装载因子低于 0.7。通用关键点:装载因子控制冲突率,超过阈值要扩容 rehash;好哈希函数(均匀、雪崩效应)比冲突策略更根本。追问方向:一致性哈希与扩容迁移、布谷鸟哈希、Go map 的渐进式扩容、为什么扩容容量常取 2 的幂(用位与取桶且扩容时元素只需判断高位决定去向)。