哈希表,也叫散列表,是根据关键字而直接访问在内存存储位置的数据结构。也就是说,它通过把键值经过一个映射函数的计算,映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称作散列函数,存放记录的数组称作散列表。
由哈希表的定义可知,散列函数关系到关键字映射到什么散列表的什么位置,实际上散列表的单元是有限的,但是关键字的个数却往往远大于该单元个数,我们必须又同时保证每个关键字通过映射函数的计算都会对应到散列表的某个位置,这样不可避免的就存在冲突的问题,即多个关键字对应于散列表的同一位置,我们必须解决这个问题。
所以哈希表就有了两个关键点:散列函数和解决冲突。散列函数和解决冲突的方法请参考维基百科,这里不做赘述。
这里的散列函数采用除留余数法,解决冲突采用分离链接法。