哈希表
哈希表(Hash table)又称散列,它是根据关键码值(key value)而直接进行访问的数据结构,通过映射函数把关键码值映射到表中一个位置来访问记录,以加快查找速度。映射函数又称散列函数,存放记录的数组叫做散列表。
由于Java程序在很多情况下需要用到数据库里的数据,但是若要频繁操作数据库,直接操作数据库会比较麻烦,效率较低,因此,早期可以使用哈希表进行数据缓存,提高数据操作效率。一个简单的缓存层原理如下图:
哈希表的一个简单结构如下图。其用一个数组来存放数据,数组的每个元素是一条链表,构成哈希表。
为了说明哈希表的作用,下面举例说明。
要求:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄),当输入该员工的 id 时, 要求查找到该员工的 所有信息。要求使用哈希表,添加时,保证按照 id从低到高插入,使用链表来实现哈希表, 该链表不带表头,即链表的第一个结点就存放雇员信息。
分析如下:由于需要员工信息,因此要创建雇员类,每个节点表示雇员信息,多个节点组成一个链表,每个链表存在在一个数组里,因此还需要链表类、以及哈希表类(数组里存放多条链表)。下面是一个分析图解。
代码实现的简要步骤:
(1)首先创建雇员类Emp,其定义员工的id、姓名,并给出雇员属性的下一个节点属性,方便对每条链表进行多个节点的创建。
(2)创建链表类EmpLinkedList,每个链表里有多个节点&#