成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

什么是哈希表

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

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)什邡,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

什么是哈希表

 基本介紹

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

什么是哈希表

Google上機題

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

要求:不使用數(shù)據(jù)庫,盡量節(jié)省內(nèi)存,速度越快越好。

package com.xie.hashtable;  import java.util.Scanner;  public class HashTableDemo {     public static void main(String[] args) {         //創(chuàng)建一個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;             }         }     } }  //創(chuàng)建哈希表,管理多條鏈表 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) {         //根據(jù)員工的id,得到該員工應(yīng)當添加到哪條鏈表         int empLinkedListNo = hashFun(emp.id);         //將emp添加到對應(yīng)的鏈表         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);         }     }      //編寫散列函數(shù),使用簡單的取模法     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();     }      //根據(jù)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;     }      //根據(jù)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 + "的雇員");         }     }  }

到此,關(guān)于“什么是哈希表”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

本文題目:什么是哈希表
地址分享:http://jinyejixie.com/article46/iisjhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、自適應(yīng)網(wǎng)站、全網(wǎng)營銷推廣企業(yè)建站、外貿(mào)建站、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
漳浦县| 特克斯县| 武定县| 保靖县| 类乌齐县| 张掖市| 包头市| 吐鲁番市| 宜章县| 加查县| 新河县| 吉林省| 四会市| 安义县| 香格里拉县| 神木县| 永德县| 苍梧县| 钟祥市| 当涂县| 桃园市| 揭阳市| 乌拉特中旗| 宁海县| 靖州| 梧州市| 天津市| 夹江县| 扎赉特旗| 调兵山市| 庄浪县| 东乡县| 张掖市| 辽阳市| 嵊州市| 京山县| 许昌县| 吴川市| 云梦县| 酒泉市| 甘肃省|