哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
哈希表 = 数组 + 链表
哈希表 = 数组 + 二叉树
google 公司的一个上机题
有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,名字,住址..),当输入该员工的 id 时,要求查找更新(增删改)该员工的所有信息。
要求:
1) 不使用数据库,速度越快越好=>哈希表(散列);
2) 添加时, id 不是从低到高插入(无序),但要求各条链表仍是从低到高(有序);
3) 使用链表来实现哈希表, 该链表不带表头[即: 链表的第一个结点就存放雇员信息] ;
4) 思路分析并画出示意图
代码实现:
数组 + 单链表(不带头节点)
package com.hashtab;
import java.util.Scanner;
/**
* @program: DataStructures
* @description: 哈希表
* @author: XuDeming
* @date: 2019-12-31 20:57:54
**/
public class HashTableDemo {
public static void main(String[] args) {
// 创建哈希表
HashTab hashTab = new HashTab(7);
Scanner scanner = new Scanner(System.in);
boolean flag = true;
while (flag) {
System.out.println("***雇员操作菜单***");
System.out.println("a(add): 添加雇员信息");
System.out.println("l(list): 显示雇员信息");
System.out.println("f(find): 查找雇员信息");
System.out.println("u(update): 更新雇员信息");
System.out.println("d(delete): 删除雇员信息");
System.out.println("e(exit): 退出系统");
System.out.println("请输入操作字符:");