标签:列表 连续 静态内部类 shm 常见 随机数 中间 enter 插入
存储时:
int hash = key.hashCode();--> 这个hashCode方法这里不详述,只要理解每个key的hash是一个固定的int值
int index = hash % Entry[].length;
Entry[index] = value;
取值时:
int hash = key.hashCode();
int index = hash % Entry[].length;
return Entry[index]
直接寻址法:取keyword或keyword的某个线性函数值为散列地址。即H(key)=key或H(key) = a?key + b,当中a和b为常数(这样的散列函数叫做自身函数)
.数字分析法:分析一组数据,比方一组员工的出生年月日,这时我们发现出生年月日的前几位数字大体同样,这种话,出现冲突的几率就会非常大,可是我们发现年月日的后几位表示月份和详细日期的数字区别非常大,假设用后面的数字来构成散列地址,则冲突的几率会明显减少。因此数字分析法就是找出数字的规律,尽可能利用这些数据来构造冲突几率较低的散列地址。
平方取中法:取keyword平方后的中间几位作为散列地址。
.折叠法:将keyword切割成位数同样的几部分,最后一部分位数能够不同,然后取这几部分的叠加和(去除进位)作为散列地址。
随机数法:选择一随机函数,取keyword的随机值作为散列地址,通经常使用于keyword长度不同的场合。
除留余数法:取keyword被某个不大于散列表表长m的数p除后所得的余数为散列地址。即 H(key) = key MOD p, p<=m。不仅能够对keyword直接取模,也可在折叠、平方取中等运算之后取模。对p的选择非常重要,一般取素数或m,若p选的不好,easy产生同义词。
标签:列表 连续 静态内部类 shm 常见 随机数 中间 enter 插入
原文地址:https://www.cnblogs.com/frankltf/p/10346573.html