java 之 Hash表
哈希表是一种数据结构 ,Hash表是将数组和链表结合起来,便于我们能够更好的行快速查询和插入以及删除数据。用传统的方法比如:数组,就使我们插入删除数据十分的复杂;链表,就使我们查询数据特别的麻烦,花在遍历上的时间会很长。
我们将这两种传统的方法结合起来,就是哈希表。我觉得可以概括为以下4点:
1.构建一个哈希表的原则
常用的构造散列函数的方法 :
a .直接寻址法
b . 数字分析法
c .平方取中法
d .折叠法
e .随机数法
f . 除留余数法
2.解决冲突问题,即:数组中的每一小项存放链表。
查找过程中,关键码的比较次数,取决于产生冲突的多少,产生的冲突少,查找效率就高,产生的冲突多,查找效率就低。因此,影响产生冲突多少的因素,也就是影响查找效率的因素。
处理冲突的方法:
a. 开放寻址法
b. 再散列法
c. 链地址法(拉链法)
3.装载因子:
防止Hash表溢出,可以合理的调节hash表的长度。
4.rehash
刷新
JDK中自带的有Hash表可以参考比较。