你好!哈希表【JAVA】

1.初识🎶🎶🎶

它基本上是由一个数组和一个哈希函数组成的。哈希函数将每个映射到数组的特定索引位置,这个位置被称为哈希码。当我们需要查找一个键时,哈希函数会计算其哈希码并立即返回结果,因此我们可以直接访问该索引位置并读取或修改该键的值,从而实现快速查找。

2.案例分析 🎶🎶🎶

使用哈希表存储人员信息

3.创建人员 🎶🎶🎶

/*** 每一位人员*/
class Emp {public int id;public String name;public Emp next;public Emp(int id, String name) {this.id = id;this.name = name;}@Overridepublic String toString() {return "Emp{" +"id=" + id +", name='" + name + '\'' +'}';}

4.创建链表🎶🎶🎶

/*** 链表*/
class EmpLinkList {private Emp head;//头节点/*** 添加员工*/public void add(Emp emp) {if (head == null) {head = emp;return;}Emp temp = head;while (true) {if (temp.next == null) {break;}temp = temp.next;//指针后移}temp.next = emp;}/*** 遍历链表*/public void list(int no) {if (head == null) {System.out.println("第" + (no + 1) + "条链表为空~");return;}Emp temp = head;while (true) {System.out.print("第" + (no + 1) + "链表" + "===>" + "当前用户id:" + temp.id + ",姓名:" + temp.name);if (temp.next == null) {break;}temp = temp.next;//指针后移}System.out.println();}/*** 查找人员*/public Emp selectById(int id) {if (head == null) {System.out.println("链表为空");return null;}Emp temp = head;while (true) {if (temp.id == id) {//找到break;}if (temp.next == null) {//链表结尾temp = null;break;}temp = temp.next;}return temp;}/*** 删除*/public void delete(int id) {if (head == null) {System.out.println("链表为空");return;}Emp temp = head;while (true) {if (temp.next.id == id) {//找到break;}if (temp.next == null) {break;}temp = temp.next;}temp.next = temp.next.next;}

5.创建哈希表🎶🎶🎶

/*** 哈希表*/
class Hash {private EmpLinkList[] empLinkListArray;//定义个管理链表的数组private int size;//共有几条链表public Hash(int size) {this.size = size;empLinkListArray = new EmpLinkList[size];//初始化每一条链表for (int i = 0; i < size; i++) {empLinkListArray[i] = new EmpLinkList();}}/*** 添加人员*/public void add(Emp emp) {//根据员工id,得到该员工应当添加到哪条链表int empLinkListNo = hashFun(emp.id);//将emp加入到对应的链表中empLinkListArray[empLinkListNo].add(emp);}/*** 遍历所有链表*/public void list() {for (int i = 0; i < size; i++) {empLinkListArray[i].list(i);}}/*** 查找人员*/public void select(int id) {//1.确定到哪条链表找int empLinkListNo = hashFun(id);Emp emp = empLinkListArray[empLinkListNo].selectById(id);if (emp != null) {System.out.println("在第" + (empLinkListNo + 1) + "条链表中找到," + "id=" + id + "的信息:" + emp);} else {System.out.println("未找到");}}/*** 删除人员*/public void delete(int id) {int empLinkListNo = hashFun(id);empLinkListArray[empLinkListNo].delete(id);}/*** 编写散列函数取模)*/public int hashFun(int id) {return id % size;}}

6.测试🎶🎶🎶

  public static void main(String[] args) {Hash hash = new Hash(7);String key = "";Scanner scanner = new Scanner(System.in);while (true) {System.out.println("请输入:");System.out.println("add:添加人员");System.out.println("list:显示人员");System.out.println("select:查找人员");System.out.println("delete:删除人员");System.out.println("exit:退出");key = scanner.next();switch (key) {case "add":System.out.println("请输入id:");int id = scanner.nextInt();System.out.println("请输入姓名:");String name = scanner.next();Emp emp = new Emp(id, name);hash.add(emp);break;case "list":hash.list();break;case "select":System.out.println("请输入你要查找的id:");id = scanner.nextInt();hash.select(id);break;case "delete":System.out.println("请输入要删除的id");id = scanner.nextInt();hash.delete(id);break;case "exit":System.out.println("谢谢使用~");System.exit(0);}}}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/210794.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Math】高斯分布的乘积 Product of Guassian Distribution【附带Python实现】

【Math】高斯分布的乘积 Product of Guassian Distribution【附带Python实现】 文章目录 【Math】高斯分布的乘积 Product of Guassian Distribution【附带Python实现】1.推导2. CodeReference 结果先放在前面 1.推导 在学习PEARL算法的时候&#xff0c;encoder的设计涉及到了…

Linux下安装Nginx

目录 Nginx简介 Nginx安装 Nginx指令 停止nginx服务 安全退出 重新加载配置文件 查看nginx进程 Nginx简介 Nginx 是一个高性能的HTTP和反向代理web服务器&#xff0c;其特点是占有内存少&#xff0c;并发能力强&#xff0c;其并发能力在同类型的网页服务器中表现较好。 …

行业内卷严重到什么程度了?

一.内卷现状 最近大家都吐槽找工作难&#xff0c;确实很难。 不得不说&#xff0c;现在找工作的难度是以前的很多倍。甚至可以说地狱级都不为过。 以前只要简历一挂到网上&#xff0c;就有很多电话打过来。特别是在一线城市&#xff0c;各种类型企业的HR都来找&#xff0c;希…

DFT(离散傅里叶变换)的通俗理解

本文包含了博主对离散傅里叶变换&#xff0c;负频率&#xff0c;实信号与复信号频谱的理解&#xff0c;如有不妥&#xff0c;欢迎各位批评指正与讨论。 文章目录 DFT的理解信号的频谱实信号的频谱复信号的频谱 DFT的理解 傅里叶变换是一种将信号从时域转换到频域的数学工具。…

TCP_握手+挥手过程状态变化分析

TCP状态解读 握手挥手过程状态变化 同时握手 双发同时发起syn请求&#xff0c;状态变化过程如下&#xff1a; 图片来源&#xff1a;http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentProcessTheThreeWayHandsh-4.htm 同时挥手 4次挥手&#xff0c;可以理解为2…

2023.12.2 做一个后台管理网页(左侧边栏实现手风琴和隐藏/出现效果)

2023.12.2 做一个后台管理网页&#xff08;左侧边栏实现手风琴和隐藏/出现效果&#xff09; 网页源码见附件&#xff0c;比较简单&#xff0c;之前用很多种方法实现过该效果&#xff0c;这次的效果相对更好。 实现功能&#xff1a; &#xff08;1&#xff09;实现左侧边栏的手…

智安网络|语音识别技术:从历史到现状与未来展望

语音识别技术是一种将语音信号转化为可识别的文本或命令的技术&#xff0c;近年来得到了广泛应用和关注。 一. 语音识别的发展现状 1.历史发展 语音识别技术的起源可以追溯到20世纪50年代&#xff0c;但直到近年来取得了显著的突破和进展。随着计算机性能的提升和深度学习算法…

用户反馈组件实现(Vue3+ElementPlus)含图片拖拽上传

用户反馈组件实现&#xff08;Vue3ElementPlus&#xff09;含图片拖拽上传 1. 页面效果1.1 正常展示1.2 鼠标悬浮1.3 表单 2. 代码部分1.2 html、ts1.2 less部分 3. 编码过程遇到的问题 1. 页面效果 1.1 正常展示 1.2 鼠标悬浮 1.3 表单 2. 代码部分 1.2 html、ts <templ…

大部分人都不知道微信语音是可以取消的

在微信聊天时&#xff0c;许多人都喜欢使用微信语音聊天&#xff0c;因为这样既省时又不需要打字&#xff0c;使用起来非常便捷。然而&#xff0c;不少人发现微信语音有一个小缺点&#xff0c;那就是一旦说错话&#xff0c;只要一松手语音就自动发送出去了&#xff0c;根本来不…

RT-Thread Studio文件消失不见或被排除构建

不得不说RT-Thread Studio里面配置真多&#xff0c;今天我同事的电脑发现根本没有被画斜杠的文件夹&#xff0c;导致我想移植f1的写内部flash这个&#xff08;可以看上一个文章&#xff09;时候不能直接点击属性排除构建&#xff0c;然后在网上查找的时候也没怎么找到说法&…

AIGC发展史

1 AIGC概况 1.1 AIGC定义 AIGC&#xff08;AI Generated Content&#xff09;是指利用人工智能技术生成的内容。它也被认为是继PGC,UGC之后的新型内容生产方式&#xff0c;AI绘画、AI写作等都属于AIGC的具体形式。2022年AIGC发展速度惊人&#xff0c;迭代速度更是呈现指数级发…

会声会影2024购买多少钱 会声会影在哪里购买

掌握视频编辑技术&#xff0c;能为我们的工作和生活带来很多帮助。例如&#xff1a;将我们精心编辑的视频&#xff0c;上传到抖音、快手等平台进行变现&#xff1b;通过天马行空的视频创意&#xff0c;摇身一变成为B站up主。因此&#xff0c;拥有一款像会声会影这样的视频编辑软…

树_二叉搜索树累加求和

//给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原树中大于或等于 // node.val 的值之和。 // // 提醒一下&#xff0c;二叉搜索树满足下列约束…

UData+StarRocks在京东物流的实践 | 京东物流技术团队

1 背景 数据服务与数据分析场景是数据团队在数据应用上两个大的方向&#xff0c;行业内大家有可能会遇到下面的问题&#xff1a; 1.1 数据服务 烟囱式开发模式&#xff1a;每来一个需求开发一个数据服务&#xff0c;数据服务无法复用&#xff0c;难以平台化&#xff0c;技术…

java项目日常运维需要的文档资料

一、前言 java项目开发完成&#xff0c;部署上线&#xff0c;进入项目运维阶段&#xff0c;日常工作需要准备哪些资料和文档?当项目上线后&#xff0c;运行一段时间&#xff0c;或多或少会遇到一些运维上的问题&#xff0c;比如服务器磁盘饱满&#xff0c;服务器CPU&#xff0…

也可Adobe Animate

Animate CC 由原Adobe Flash Professional CC 更名得来&#xff0c;2015年12月2日&#xff1a;Adobe 宣布Flash Professional更名为Animate CC&#xff0c;在支持Flash SWF文件的基础上&#xff0c;加入了对HTML5的支持。并在2016年1月份发布新版本的时候&#xff0c;正式更名为…

Java 设计模式系列:代理模式

文章目录 介绍静态代理基本介绍应用实例静态代理优缺点 动态代理基本介绍JDK 中生成代理对象的 API Cglib 代理基本介绍实现步骤 介绍 1&#xff09;代理模式&#xff1a;为一个对象提供一个替身&#xff0c;以控制对这个对象的访问。即通过代理对象访问目标对象 2&#xff09…

Java链接数据库

本文介绍的是Java链接数据库中的JDBC操作&#xff0c;JDBC虽然现在用的不多&#xff0c;但面试的时候会问道。需要有相应的了解。下面以链接MySQL为例子。 JDBC 什么jdbc Java DataBase Connectivity是一种用于执行SQL语句的Java API&#xff0c;它由一组用Java语言编写的类和…

服务器中启动和停止项目

服务器中启动和停止项目 一、前言二、使用命令启动和关闭项目1、启动项目2、停止项目 三、使用可执行脚本启动和关闭项目1、启动项目2、停止项目 一、前言 在服务器上部署项目&#xff0c;一般就是将项目挂在后台&#xff0c;如果是微服务首选docker-compose&#xff0c;可以看…

2022年高校大数据挑战赛A题工业机械设备故障预测求解全过程论文及程序

2022年高校大数据挑战赛 A题 工业机械设备故障预测 原题再现&#xff1a; 制造业是国民经济的主体&#xff0c;近十年来&#xff0c;嫦娥探月、祝融探火、北斗组网&#xff0c;一大批重大标志性创新成果引领中国制造业不断攀上新高度。作为制造业的核心&#xff0c;机械设备在…