解决hash冲突的四种方法

引言

散列函数,又称为散列算法,哈希函数。常见的比如MD4,MD5,SHA-0,SHA-1等。构造散列函数时应注意:

  • 散列函数的定义域必须包括存储的全部元素的关键字,如果散列表允许有m个地址时,散列函数的值域应该是[0, m-1]。
  • 散列函数计算出来的地址应该能均匀分布在整个地址空间中,若key是从关键字集合中随机抽取的一个关键字,散列函数应能以同等概率取0到m-1中的每一个值。
  • 散列函数应该是简单的,能在较短的时间内计算出结果。

在Java1.7中HashMap的底层源码中哈希函数的实现其实是分开写的。下面是HashMap中put方法的源码。他是先计算了key的一个hash数值。
put方法源码
下面是HashMap中hash函数的实现,请注意,这里的hash与本篇文章说的哈希函数不同,因为HashMap中的哈希函数是分两步实现的。
HashMap中的hash函数实现
下面是哈希函数在HashMap源码中实现的第二部分。
indexFor函数的实现
所以,HashMap的哈希函数可以表示为:
Hash(key) 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值