三个解决Hash冲突的方法(简单易懂)

链地址法

这种方法是把所有Hash地址相同的记录都链接在同一链表中
在这里插入图片描述
此图的Hash算法:h(key)=key%7算出对应的hash值,按照这个hash值,放到数组对应的位置上面
如何生产链表:

//先从数组上取下原来的值,给塞到新的节点去,然后把新的节点再放到数组上。   
   void createEntry(int hash, K key, V value, int bucketIndex) {  
       Entry<K,V> e = table[bucketIndex];  
       table[bucketIndex] = new Entry<>(hash, key, value, e);  
       size++;  
   }  

再Hash法

计算hashcode的方法不止一个,一个要是算出来重复了,就用另一个算法去算。直到不重复为止

公共溢出区

建立一个公共溢出区,把冲突的都放到另一个地方,不在表里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值