hash

哈希碰撞是指不同的输入数据经过哈希函数运算后得到相同的哈希值,常见于大数据场景和哈希表如HashMap的使用中。解决碰撞的方法包括开放寻址法和链地址法,HashMap采用链地址法,通过链表存储相同哈希值的元素,以降低碰撞影响。默认长度为16是为了优化碰撞概率。
摘要由CSDN通过智能技术生成

hash 散列: 是将任意长度的数据映射到有限长度的域上,也就是对一串数据进行hash运算后,输入另一端固定长度的数据,作为数据的身份象征。

注解:Hash算法常用于消息摘要的场景 MD5、SHA都属于Hash算法的实现。

hash 碰撞: 两个不同的原始值经过hash运算后得到相同的结果,这就是哈希碰撞。

1.什么是hash碰撞?

就是两个对象的key的hashcode是一样的,这个时候怎么get他的value呢?

答案:通过equals遍历table那个位置上面的Entry链表。


hash 碰撞出现的场景:
1.一般会出现在大的数据情况下
2.hashcode 生成方法唯一性较弱。

解决hash 碰撞的方法有两个:
1.开发寻址法(开放定址法)
2.链接法    (链地址)
3.建立一个公共溢出区

开发寻址法:当发生地址冲突时,按照某种方法继续探测hash中的其他存储单元,直到找到空位置为止。


链地址法:链地址法是hashmap 中的策略,原理是在hashmap 中同样哈希值的位置以一串链表存储起来数据,把多个原始值不同但哈希结果相同的数据以链表存储起来

HashMap的默认长度为16,是为了降低hash碰撞的几率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值