【散列表】拉链法以及线性探查法
1.散列表的查找步骤:
(1)将查找的键用散列函数转化为数组的一个索引
(2)处理碰撞冲突的过程:拉链法、线性查找法
2.散列函数的不同类型的不同应用:
如果键为一个数,可以直接使用
如果键为一个字符串,如人名,需要将字符串转化为一个数
如果有多个部分,如邮箱,用某种方法结合起来
3.正整数的散列函数
除留余数法:
选择大小为M的素数(除了1没有其他因数的数)的数组。对于任意数k,计算k除以M的余数。
4.浮点数:
将键表示为二进制数,然后应用除留余数法。
5.字符串:
6.组合键(年月日)
7.hashCode()方法
每一个数据类型的hashCode方法和equals方法必须一致。
a.equals(b)返回为true时 必须a.hashCode() b.hashCode返回值必须一致
两个对象a b如果hashCode值相同 ,不一定意味着对象相同,还需要比较equals
8.HashMap使用hashcode进行索引
如果重写了equals方法 必须要看一下hashcode方法
因为要满足
a.equals(b)返回为true时 必须a.hashCode() b.hashCode返回值必须一致
9.基于拉链法的散列表
10.基于线性探查法的散列表