哈希冲突

什么是哈希冲突

概念

  • 哈希算法被计算的数据是无限的,而计算后的结果范围有限,因此总会存在不同的数据经过计算后得到的值相同,这就是哈希冲突。 键(key)经过hash函数得到的结果作为地址去存放当前的键值对(key-value)(这个是hashmap的存值方式),但是却发现该地址已经有值,就会产生冲突。
  • (自己理解)不同的的key经过hash函数去存放当前键值对时,但经过key转换为hashcode转换出来的物理地址已经存放有值了,所以就会造成冲突~。
  • 如果两个不同对象的hashCode相同,这种现象称为hash冲突

解决方法

  • 哈希冲突的解决方法:链地址法(拉链法,hashmap的解决方式): 将哈希值相同的元素构成一个链表,head放在散列表中。一般链表长度超过了8就转为红黑树,长度少于6个就变为链表。
  • 再哈希法:同时构造多个不同的哈希函数,Hi = RHi(key) i= 1,2,3 … k; 当H1 = RH1(key) 发生冲突时,再用H2 = RH2(key) 进行计算,直到冲突不再产生,这种方法不易产生聚集,但是增加了计算时间。
  • 建立公共溢出区:把哈希表分为公共表和溢出表,如果发生了溢出,溢出的数据全部放在溢出区。

收藏的hashcode博文:https://blog.csdn.net/qq_36771269/article/details/79728243

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值