数据结构系列第四部分:散列

1)文笔有限,如果发现博客有书写有误的地方恳请读者直言不讳,我一定会第一时间改正。
2)代码的具体实现可以参考代码中的注释,如果由于注释不清楚而不明白相应原理,可以与作者私聊。码字不易,有兴趣的小伙伴点个赞呗,大家相互学习。
3)本篇博客为数据结构系列第四部分:散列,如需了解数据结构的其它部分,欢迎点击链接。

  1. 数据结构系列绪论部分:为什么需要数据结构
  2. 数据结构系列第一部分:
  3. 数据结构系列第二部分:
  4. 数据结构系列第三部分:
  5. 数据结构系列第四部分:散列
  6. 数据结构系列第五部分:递归
  7. 数据结构系列第六部分:排序
  8. 数据结构系列第七部分:查找

1 定义

散列表(Hash table,也叫哈希表),是根据 Key-Value 而直接进行访问的数据结构。也就是说,它通过把Key-Value映射到表中一个位置来访问记录,以加快查找的速度。

这个映射函数叫做散列函数,存放记录的数组叫做哈希表。
 

2 为什么需要散列这种数据结构

为什么使用哈希表呢?在平常的数据管理中,我们常常将数据放在数据库中,但数据库实际上是一个硬盘,如果直接从 Java 程序向数据库中存取数据的速度会比较慢,这个时候,我们有两种方法来解决这个问题。

  1. 使用现在的缓存产品,比如Redis或者Mencache;
  2. 自己写哈希表。

之所以这两种方式方式会更快,是因为它们是存储在内存中的,相比于硬盘,存取速度会更快。

哈希表(Hashtab)由以下部分组成,存放链表的数组,以及存放数据的链表,而数据存放的链表在数据中的索引则由散列函数得到。 图解如下:
在这里插入图片描述
 

3 实例分析

实例:将某学校的学生信息存入到某一数据结构中,信息包括 id、姓名,实现该系统的增、查与遍历。要求: 不使用数据库,速度越快越好。

思路分析:见上图。

代码实现

import java.util.Scanner;

/**
 * 需求:利用哈希表(散列表)的方法来管理学生信息,不使用数据库的方式
 */
public class StudentManageWindow {
   
    public static void main(String[] args) {
   
        //创建哈希表
        Hashtab hashTab = new Hashtab(7);

        //写一个简单的菜单
        String key = "";
        Scanner scanner = new Scanner(System.in);
        while(true) {
   
            System.out.println("add:  添加雇员");
            System.out.println("list: 显示雇员");
            System.out.println("find: 查找雇员");
            System.out.println("exit: 退出系统");

            key = scanner.next();
            
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值