哈希表 傷城~ 2021-08-11 17:13 588阅读 0赞 【一】哈希表 > 他通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度。这个映射函数就是散列函数。 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RoZV9CZXN0X0hhY2tlcg_size_16_color_FFFFFF_t_70][] 【二】哈希表的价值 相当于一个缓存区,将常用的加入哈希表,减少对数据库的操作。 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RoZV9CZXN0X0hhY2tlcg_size_16_color_FFFFFF_t_70 1][] 【三】自己写的哈希表 import java.util.Scanner; public class HashTableTest { //4.测试 public static void main(String[] args) { Scanner sc=new Scanner(System.in); StudentHashTab sht=new StudentHashTab(3); String key=""; System.out.println("show:表示遍历栈"); System.out.println("exit:表示退出程序"); System.out.println("add:表示添加"); System.out.println("find:表示查询"); while(true) { key=sc.next(); switch(key) { case "show": sht.list(); break; case "exit": sc.close(); System.exit(0); case "add": System.out.println("请输入id:"); int id=sc.nextInt(); System.out.println("请输入name:"); String name=sc.next(); sht.add(new Student(id,name)); break; case "find": System.out.println("请输入id:"); int sid=sc.nextInt(); sht.findStudentById(sid); break; default: break; } } } } //3.HashTable=数组+链表 class StudentHashTab{ //定义数组大小以及数组 private int size; private StudentList[] slist; StudentHashTab(int size){ this.size=size; slist=new StudentList[size]; //分别初始化每条链表 for(int i=0;i<size;i++) { slist[i]=new StudentList(); } } //添加元素 public void add(Student stu) { int stuNo=hashFun(stu.id); slist[stuNo].add(stu); } //遍历数组 public void list() { for(int i=0;i<size;i++) { slist[i].list(i);; } } public void findStudentById(int id) { int no=hashFun(id); Student stu=slist[no].findStudentById(id); if(stu!=null) { System.out.printf("在哈希表第%d条链表中找到该学生信息,学生名字为%s",no,stu.name); }else { System.out.printf("在哈希表中没有找到id为%d该雇员信息",id); } } //添加散列函数 public int hashFun(int id) { return id%size; } } //2.链表 class StudentList{ private Student head; //添加节点 public void add(Student stu) { //如果链表为空,则直接在头结点之后添加元素 if(head==null) { head=stu; return; } //如果头结点不为空,遍历指针至尾节点,在尾节点后添加元素 Student temp=head; while(true) { if(temp.next==null) { break; } temp=temp.next; } temp.next=stu; } public Student findStudentById(int id) { if(head==null) { System.out.println("链表为空,没有学生信息"); return null; } Student temp=head; //两种情况:1.找到学生,返回学生信息 2.没有该学生相关的信息 while(true) { if(temp.id==id) { break; } if(temp.next==null) { temp=null; break; } temp=temp.next; } return temp; } //遍历链表 public void list(int no) { if(head==null) { System.out.println("第"+no+"链表为空"); return; } System.out.print("第"+no+"链表信息为:"); Student temp=head; while(temp!=null) { System.out.print("==>"+temp.id+"="+temp.name); temp=temp.next; } System.out.println(); } } //1.节点 class Student{ public int id; public String name; public Student next; Student(int id,String name){ this.id=id; this.name=name; } } 【四】代码部分输出示例 ![20190913204130390.png][] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RoZV9CZXN0X0hhY2tlcg_size_16_color_FFFFFF_t_70]: /images/20210811/aced0dacd21f45c7b29a0edf5951c17f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RoZV9CZXN0X0hhY2tlcg_size_16_color_FFFFFF_t_70 1]: /images/20210811/35824bcdae17431c80a640fefa119327.png [20190913204130390.png]: /images/20210811/18c35beffeb842fe9cd856fc993bd031.png
相关 哈希值 哈希表_哈希杰森 哈希值 哈希表 我最近写了一个[简单的库,可预测地对json进行哈希处理][json] 。 该实用程序基于出色的[Jackson Json解析库][Jackson Json 阳光穿透心脏的1/2处/ 2023年02月25日 04:56/ 0 赞/ 30 阅读
相关 哈希表 ![Center][] [Center]: /images/20220731/1379dbdc6efb4a42a0b011f0b3aa4455.png 「爱情、让人受尽委屈。」/ 2022年08月14日 04:56/ 0 赞/ 218 阅读
相关 哈希表 什么是哈希表 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的[数据结构][Link 1]。也就是说,它通过把关键码 悠悠/ 2022年07月15日 12:14/ 0 赞/ 233 阅读
相关 哈希表 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速 系统管理员/ 2022年06月10日 01:26/ 0 赞/ 288 阅读
相关 哈希表 我们知道,通过对数组进行直接寻址(Direct Addressing),可以在 O(1) 时间内访问数组中的任意元素。所以,如果存储空间允许,可以提供一个数组,为每个可能的关键 快来打我*/ 2022年06月05日 02:20/ 0 赞/ 395 阅读
相关 哈希表 哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0 今天药忘吃喽~/ 2022年02月01日 14:36/ 0 赞/ 445 阅读
相关 【哈希表】 char FirstNotRepeatingChar(char pString) { // invalid input if(! r囧r小猫/ 2022年01月06日 11:33/ 0 赞/ 360 阅读
相关 哈希表 一、简介 如果所有的键都是小整数,那么我们可以用一个数组来实现无序的符号表,将键作为数组的索引i而数组中i(键)处储存的就是对应的值。 这样就可以快速地访问任意键的值, 旧城等待,/ 2021年12月22日 01:21/ 0 赞/ 439 阅读
相关 哈希表 【一】哈希表 > 他通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度。这个映射函数就是散列函数。 ![watermark_type_ZmFuZ3poZW5na 傷城~/ 2021年08月11日 17:13/ 0 赞/ 589 阅读
还没有评论,来说两句吧...