【Java数据结构系列】哈希表

  一般的线性表、树中,记录在结构中的相对位置是随机的即和记录的关键字之间
不存在确定的关系,在结构中查找记录时需进行一系列和关键字的比较。这一类
查找方法建立在“比较”的基础上,查找的效率与比较次数密切相关。理想的情况
是能直接找到需要的记录,因此必须在记录的存储位置和它的关键字之间建立一
确定的对应关系 f,使每个关键字和结构中一个唯一的存储位置相对应。因而查
找时,只需根据这个对应关系 f 找到给定值 K 的像 f(K)。若结构中存在关键字和
K 相等的记录,则必定在 f(K)的存储位置上,由此不需要进行比较便可直接取得
所查记录。在此,称这个对应关系 f 为哈希函数,按这个思想建立的表为哈希表
(又称为杂凑法或散列表)。
哈希表不可避免冲突(collision)现象:对不同的关键字可能得到同一哈希地址 即
key1≠key2,而 f(key1)=f(key2)。具有相同函数值的关键字对该哈希函数来说称
为同义词(synonym)。 因此,在建造哈希表时不仅要设定一个好的哈希函数,而
且要设定一种处理冲突的方法。可如下描述哈希表:根据设定的哈希函数 H(key)
和所选中的处理冲突的方法,将一组关键字映象到一个有限的、地址连续的地址
集(区间)上并以关键字在地址集中的“象”作为相应记录在表中的存储位置, 这种表
被称为哈希表。

 

你可能感兴趣的:(java)