日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java hashtable 数据结构_数据结构--哈希表(Java)

發布時間:2025/3/20 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java hashtable 数据结构_数据结构--哈希表(Java) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據結構--哈希表(Java)

介紹

哈希表 底層是 數組加鏈表 或者是 數組加二叉樹 ,一個數組里面有多個鏈表,通過散列函數來提高效率

代碼

package cn.guizimo.hashtab;

import java.util.Scanner;

/**

* @author guizimo

* @date 2020/7/23 10:29 下午

*/

public class HashTabDemo {

public static void main(String[] args) {

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("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);

hashTab.add(emp);

break;

case "list":

hashTab.list();

break;

case "find":

System.out.println("請輸入id");

id = scanner.nextInt();

hashTab.find(id);

break;

case "exit":

scanner.close();

System.exit(0);

default:

break;

}

}

}

}

class Emp{

public int id;

public String name;

public Emp next;

public Emp(int id, String name) {

super();

this.id = id;

this.name = name;

}

}

//哈希表

class HashTab{

private EmpLinkedList[] empLinkedListArray;

private int size;

//構造器

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){

int empLinkedListNo = hashFun(emp.id);

empLinkedListArray[empLinkedListNo].add(emp);

}

public void find(int id){

int empLinkedListNo = hashFun(id);

Emp emp = empLinkedListArray[empLinkedListNo].find(id);

if (emp != null){

System.out.printf("在第%d條鏈表中找到id=%d\n",(empLinkedListNo+1),id);

}else {

System.out.println("沒有找到");

}

}

//遍歷

public void list(){

for (int i = 0; i < size; i++) {

empLinkedListArray[i].list(i);

}

}

//散列(取模)

public int hashFun(int id){

return id % size;

}

}

class EmpLinkedList{

private Emp head;

public void add(Emp emp){

if(head == null){

head = emp;

return;

}

Emp curEmp = head;

while (true){

if(curEmp.next == null){

break;

}

curEmp = curEmp.next;

}

curEmp.next = emp;

}

public void list(int no){

if(head == null){

System.out.println("第"+(no+1)+"條鏈表為空");

return;

}

System.out.print("第"+(no+1)+"條鏈表信息");

Emp curemp = head;

while (true){

System.out.printf("id=%d,name=%s\t",curemp.id,curemp.name);

if(curemp.next == null){

break;

}

curemp = curemp.next;

}

System.out.println();

}

public Emp find(int id){

if(head == null){

System.out.println("鏈表為空");

return null;

}

Emp curEmp = head;

while (true){

if(curEmp.id == id){

break;

}

if(curEmp.next == null){

curEmp = null;

break;

}

curEmp = curEmp.next;

}

return curEmp;

}

}

原文鏈接:https://www.cnblogs.com/guizimo/p/13369611.html

總結

以上是生活随笔為你收集整理的java hashtable 数据结构_数据结构--哈希表(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。