解决哈希冲突的几种方法


哈希表是一种根据 key-value 进行访问的数据结构,它通过把 key 值映射到表中的一个位置来访问记录,以加快查找速度,哈希表中寻找一个特定的元素,时间复杂度只需要O(1)。
只要两个元素的 key 计算的哈希值相同就会发生哈希碰撞,也叫哈希冲突。遇到哈希冲突怎么办?

1、链表式解决

我们熟悉的 HashMap 就是采用了这种方式解决哈希冲突

当没有发生哈希冲突的时候 HashMap 只有数组。但是当发生哈希冲突时,它会在哈希函数找到的当前数组内存地址位置下添加一条链表。
在这里插入图片描述

2、开放寻址法

2.1 线性探测法

ThreadLocal 就是采用了这种方式解决哈希冲突

如下图,元素 15 已经占据了下标为 2 的位置,元素 2 本身也应该占据下标为 2 的位置,这时遇到哈希冲突,它就往下一个地址寻找空位。
在这里插入图片描述

2.2 平方探测法

在这里插入图片描述

2.3 双哈希法

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值