散列表的设计和应用
什么是散列表
散列表的英文叫“Hash Table”,我们平时也叫它“哈希表”或者“Hash 表”
散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。
为什么这么说呢?其实所谓的散列表的存储是从要存储的数据中抽取出某些数据,根据某个具体的规则计算出一个数组的下标,然后将这个数据存储到对应下标的位置,抽取出来的数据叫做键(key),或者叫关键字,这个规则就叫做散列函数,计算得到的数组下标就是散列值,或者叫Hash值。
我们具体举个例子,我们要把一个名叫abcd.txt的文档存储在散列表中,我们就以文件名作为key,设计一个散列函数,这个散列函数入参就是文件名,经过一系列的计算,得到数组的下标是3,那么就把这个文档的内容存储在数组下标为3的地方,下次我想看一下是否存储过abcd.txt的文档,可以再次执行散列函数,得到下标3,然后去查询下标为3的地方是否有数据。