哈希表
哈希表
哈希表 也叫 散列表
哈希表是根据关键码的值⽽直接进⾏访问的数据结构。
哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素
⼀般哈希表都是⽤来快速判断⼀个元素是否出现集合⾥。
哈希函数
哈希函数如下图所示,通过hashCode把名字转化为数值,⼀般hashcode是通过特定编码⽅式,可以将其他数据格
式转化为不同的数值,这样就把学⽣名字映射为哈希表上的索引数字了。
哈希碰撞:不同的元素映射到相同的下标
-
线性法:
其实拉链法就是要选择适当的哈希表的⼤⼩,这样既不会因为数组空值⽽浪费⼤量内存,也不会因为链表太⻓⽽在
查找上浪费太多时间。
-
拉链法:
使⽤线性探测法,⼀定要保证tableSize⼤于dataSize。 我们需要依靠哈希表中的空位来解决碰撞问题。
例如冲突的位置,放了⼩李,那么就向下找⼀个空位放置⼩王的信息。所以要求tableSize⼀定要⼤于dataSize ,
要不然哈希表上就没有空置的位置来存放 冲突的数据了。如图所示:
常见的3种哈希函数
-
数组
-
set
-
map