哈希表

哈希表

可能是数据结构这课没怎么听,我确实不知道哈希表的原理

a["key"] = "value"

对key算哈希值,假设得到a1b2c3d4e5f6,对这个哈希值取模,假设%16=4,那么创建一个16长度的数组,每个数组的元素是链表,将这个key放到4的链表的末尾

如果两个key哈希取模后相等,那么就会有哈希冲突,链表就规避这个问题。但是在访问(lookup)的时候就需要遍历链表,操作的时间会变长

这种情况就要将模取的大一些,就能打散。一般而言是会设置load factor,当超过阈值时(表中的元素数量超过数组长度的一定比例如0.75时)自动将模和数组扩大至原来的两倍并重新hash