- 哈希表 ( Hash table ) ,底层为数组,数组元素格式为 key-value ,也称做桶
- 随机访问速度极快,通过哈希函数对 key 计算即可得出下标
- 空间利用率不高、插入时需要考虑哈希冲突问题
哈希函数
- 哈希表的核心,一个设计良好的哈希函数,可提高空间利用率、减少哈希冲突的概率
- 输入目标值 ( key ) ,输出哈希值(一般情况下就是下标,但有时需要进一步计算以获得下标)
哈希冲突和常见解决方法
- 也叫哈希碰撞。指的是不同 key 计算出相同下标的情况
- 开放寻址法:当前位置被占用,就依次查看后一个位置是否可用,直到找到空位置
- 拉链法:桶中额外存储一个指针指向下一个元素,使哈希值相同的元素形成链表;冲突过多时需处理链表过长产生的效率问题
哈希表的扩容
- 哈希表中元素达到一定量时就需要对其进行扩容,避免过高的哈希冲突概率
- 扩容后需重新计算所有元素的哈希值以放入新数组中