
哈希表用来快速判断一个元素是否出现在集合里
例如查询一个名字是否出现在这个学校里,要枚举的话时间复杂度是O(n),如果使用哈希表就是O(1)
初始化学校所有学生名字都在哈希表里面,通过索引就能判断是否存在
将学生姓名映射到哈希表上就是哈希函数
哈希函数

通过hashCode把名字转换为数值,一般hashcode是通过特定编码形式,将其他数据格式转换为不同的值,这样就把学生名字映射到哈希表上的索引数字了
如果hashcode得到的数值>哈希表的大小, 就对数值进行取模,保证学生姓名一定映射到哈希表上
如果学生数量>哈希表的大小 ->哈希碰撞
哈希碰撞

小李和小王都映射到哈希表索引下标为1的位置,这种现象就叫哈希碰撞
哈希碰撞的解决方法:拉链法和线性探测法
拉链法

(数据规模是dataSize, 哈希表的大小为tableSize)
拉链法就是要选择适当的哈希表的大小,这样既不会因为数组空值而浪费大量内存,也不会因为链表太长而在查找上浪费太多时间。
线性探测法
保证tableSize > dataSize,依靠哈希表的空位来解决碰撞问题

Python可以参考 List列表、Set集合、字典Dictionary
总结
快速判断一个元素是否出现在集合里,考虑哈希法