当前位置: 首页 > 科技观察

Java编程技巧——数据结构与算法“哈希表”

时间:2023-03-14 10:47:53 科技观察

基本介绍哈希表(HashTable,也叫哈希表)是一种根据键值(KeyValue)直接访问的数据结构。也就是说,它通过将键值映射到表中的某个位置来访问记录以加快查找速度。这种映射函数称为哈希函数,存储记录的数组称为哈希表。电脑上有一家公司。当有新员工来报到时,需要添加员工的信息(id,性别,年龄,地址...),当输入员工id时,需要找到该员工的所有信息。要求:不使用数据库,尽量节省内存,越快越好。packagecom.xie.hashtable;importjava.util.Scanner;publicclassHashTableDemo{publicstaticvoidmain(String[]args){//创建一个HashTabHashTabhashTab=newHashTab(7);Stringkey="";Scannerscanner=newScanner(System.in);while(true){System.out.println("add:添加员工");System.out.println("list:显示员工");System.out.println("find:查找员工");System.out.println("delete:删除员工");System.out.println("exit:退出程序");key=scanner.next();switch(key){case"add":System.out.println("enterid");intid=scanner.nextInt();System.out.println("输入名称");Stringname=scanner.next();Empemp=newEmp(id,name);hashTab.add(emp);break;case"list":hashTab.list();break;case"find":System.out.println("请输入数字");intno=scanner.nextInt();hashTab.findEmpById(no);break;case"删除":System.out.println("请输入序列号");intdeleteNo=scanner.nextInt();hashTab.deleteEmpById(deleteNo);break;case"退出";:scanner.close();System.exit(0);break;default:break;}}}}//创建哈希表并管理多个链表classHashTab{privateintsize;privateEmpLinkedList[]empLinkedListArray;publicHashTab(intsize){this.size=size;empLinkedListArray=newEmpLinkedList[size];for(inti=0;iid=%d,name=%s\t",curr.id,curr.name);curr=curr.next;}else{break;}}System.out.println();}//根据id查找员工publicEmpfindEmpById(intid){if(head==null){System.out.println("链表为空");returnnull;}Emptemp=head;while(temp!=null){if(temp.id==id){returntemp;}temp=temp.next;}returnnull;}//根据id删除员工publicvoiddeleteEmp(intid){if(head==null){System.out.println("没有id="+id+"的员工");返回;}Empcurr=head;booleanflag=false;while(true){if(curr==null){break;}if(curr.next.id==id){flag=true;break;}curr=curr.next;}if(flag){curr.next=curr.next.next;}else{System.out.println("没有id="+id+""的员工);}}}【编者推荐】5分钟你了解K8S的本质架构概念,和网络模型百度程序员1992年被捕,我们有什么警示?开源云盘工具:Nextcloud21私有云盘构建更纯粹,微软Windows1021H2大更新将减少系统臃肿软件数量996操作系统是好是坏?