亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是哈希表

發布時間:2021-10-15 14:56:39 來源:億速云 閱讀:122 作者:iii 欄目:編程語言

這篇文章主要介紹“什么是哈希表”,在日常操作中,相信很多人在什么是哈希表問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”什么是哈希表”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

什么是哈希表

 基本介紹

散列表(Hash Table,也叫哈希表),是根據關鍵碼值(Key  Value)而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中的一個位置來訪問記錄,以加快查找的速度。這個映射函數叫做散列函數,存放記錄的數組叫做散列表

什么是哈希表

Google上機題

有一個公司,當有新員工來報到時,要求將該員工的信息加入(id,性別,年齡,地址….),當輸入該員工的id時,要求查找該員工的所有信息。

要求:不使用數據庫,盡量節省內存,速度越快越好。

package com.xie.hashtable;  import java.util.Scanner;  public class HashTableDemo {     public static void main(String[] args) {         //創建一個HashTab         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("delete:刪除雇員");             System.out.println("exit:退出程序");             key = scanner.next();             switch (key) {                 case "add":                     System.out.println("輸入id");                     int id = scanner.nextInt();                     System.out.println("輸入name");                     String name = scanner.next();                     Emp emp = new Emp(id, name);                     hashTab.add(emp);                     break;                 case "list":                     hashTab.list();                     break;                 case "find":                     System.out.println("請輸入編號");                     int no = scanner.nextInt();                     hashTab.findEmpById(no);                     break;                 case "delete":                     System.out.println("請輸入編號");                     int deleteNo = scanner.nextInt();                     hashTab.deleteEmpById(deleteNo);                     break;                 case "exit":                     scanner.close();                     System.exit(0);                     break;                 default:                     break;             }         }     } }  //創建哈希表,管理多條鏈表 class HashTab {     private int size;     private EmpLinkedList[] empLinkedListArray;      public HashTab(int size) {         this.size = size;         empLinkedListArray = new EmpLinkedList[size];         for (int i = 0; i < size; i++) {             empLinkedListArray[i] = new EmpLinkedList();         }      }      //添加雇員     public void add(Emp emp) {         //根據員工的id,得到該員工應當添加到哪條鏈表         int empLinkedListNo = hashFun(emp.id);         //將emp添加到對應的鏈表         empLinkedListArray[empLinkedListNo].add(emp);     }      //查找員工     public Emp findEmpById(int id) {         int no = hashFun(id);         Emp empById = empLinkedListArray[no].findEmpById(id);         if (empById == null) {             System.out.println("不存在id=" + id + "元素");             return null;         } else {             System.out.println("存在id=" + id + ",name=" + empById.name);             return empById;         }     }      //刪除雇員     public void deleteEmpById(int id) {         int no = hashFun(id);         empLinkedListArray[no].deleteEmp(id);     }      //遍歷哈希表     public void list() {         for (int i = 0; i < size; i++) {             empLinkedListArray[i].list(i);         }     }      //編寫散列函數,使用簡單的取模法     private int hashFun(int id) {         return id % size;     }  }  //表示雇員 class Emp {     public int id;     public String name;     public Emp next;      public Emp(int id, String name) {         this.id = id;         this.name = name;     }      @Override     public String toString() {         return "Emp{" +                 "id=" + id +                 ", name='" + name + '\'' +                 '}';     } }  //表示鏈表 class EmpLinkedList {     //頭指針     private Emp head;      //添加雇員到鏈表     //說明:     //1.當添加雇員時,id時自增的,即id分配總是從小到大,因此我們將該雇員直接加到本鏈表的最后即可     public void add(Emp emp) {         //如果是添加第一個雇員         if (head == null) {             head = emp;         } else {             Emp curr = head;             while (true) {                 if (curr.next == null) {                     break;                 }                 curr = curr.next;             }             curr.next = emp;         }     }      //遍歷     public void list(int no) {         if (head == null) {             System.out.println("第" + (no + 1) + "鏈表為空");             return;         }         System.out.print("第" + (no + 1) + "鏈表信息為:");         Emp curr = head;         while (true) {             if (curr != null) {                 System.out.printf("=> id=%d,name=%s\t", curr.id, curr.name);                 curr = curr.next;             } else {                 break;             }         }         System.out.println();     }      //根據id查找雇員     public Emp findEmpById(int id) {         if (head == null) {             System.out.println("鏈表為空");             return null;         }         Emp temp = head;         while (temp != null) {             if (temp.id == id) {                 return temp;             }             temp = temp.next;         }         return null;     }      //根據id刪除雇員     public void deleteEmp(int id) {         if (head == null) {             System.out.println("沒有id=" + id + "的雇員");             return;         }         Emp curr = head;         boolean flag = 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 + "的雇員");         }     }  }

到此,關于“什么是哈希表”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

山阴县| 闻喜县| 芦溪县| 东乡县| 元氏县| 吉木乃县| 浦北县| 青岛市| 炎陵县| 莱阳市| 托克托县| 白沙| 江孜县| 二连浩特市| 靖西县| 文水县| 毕节市| 满城县| 赤壁市| 福州市| 阳山县| 榆中县| 仙桃市| 尼木县| 苗栗市| 星座| 顺平县| 科技| 凤城市| 灵武市| 天气| 攀枝花市| 长乐市| 河北区| 桑日县| 金乡县| 平湖市| 聂拉木县| 弋阳县| 星座| 北宁市|