在某些情况下,一些键会有相同的散列值。
而不同的值在散列表中对应相同位置的时候,我们就称之为冲突。
let hash = new HashTable()
// 添加值并打印输出的话可能会得到相同的hash值
has.put('Tyrion', 'aaa@qq.com') // 16
has.put('Aaron', 'bbb@qq.com') // 16
复制代码
一旦发生冲突,那么后添加的值会把前一个添加的值覆盖掉。以致于会造成数据的丢失,而这显然不是我们想要的结果。
1. 分离链接
分离链接法包括为散列表的每一个位置创建一个链表并将元素存储在里面。它是解决冲突的最简单的方法。但是在HashTable实例之外还需要额外的存储空间。
也就是说对于普通的散列表,本身在某个位置存储的是一个值,而我们已经知道链表是有序的元素的集合,