【散列表】拉链法以及线性探查法

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.基于线性探查法的散列表

 

posted @ 2021-02-02 13:24  枫叶像思念  阅读(566)  评论(0编辑  收藏  举报