序言一、散列函数设计要求二、解决散列冲突的方法
1.开放寻址法2.链表法3.如何选择
序言一、散列函数设计要求散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。
1.散列函数计算得到的散列值是一个非负整数;
2.如果key1 = key2,那hash(key1) == hash(key2);
3.如果key1 ≠ key2,那hash(key1) ≠ hash(key2)。
二、解决散列冲突的方法 1.开放寻址法当我们往散列表中存放数据的时候,如果发现当前位置已被占用,则继续往后寻找一个空的位置安放数据。
2.链表法每一个存放数据的位置,都是一条链表,对于每一个插入的数据,都将其插入到这个链表中。
3.如何选择(1)当数据量比较小、装载因子小的时候,适合采用开放寻址法。
(2)基于链表的散列冲突处理方法比较适合存储大对象、大数据量的散列表,而且,比起开放寻址法,它更加灵活,支持更多的优化策略



