栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

怎样简简单单的用java手写个哈希表

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

怎样简简单单的用java手写个哈希表

文章目录

什么是哈希表简简单单写一个数据类简简单单写个链表简简单单把链表放数组里面简简单单的测试

什么是哈希表

哈希表就是一个数组加一个链表
数组的的每一个位置对应一个链表
通过取余的方式来确定一个数据往第几个链表里面放

简简单单写一个数据类
package Hashtable;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;



public class Emp {
    private int id;
    private String name;
    private Emp next;

    public Emp(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "id=" + id +
                ", name='" + name +'}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Emp getNext() {
        return next;
    }

    public void setNext(Emp next) {
        this.next = next;
    }
}

简简单单写个链表
package Hashtable;

import lombok.Data;


public class EmplinkedList {
   private Emp head;
   private Emp end;
   
   public void add(Emp emp){
      if(head == null){
         head=emp;
         end=emp;
      }else{
         end.setNext(emp);
         end=emp;
      }

   }

   public void deleteEmpById(int id){
      Emp ep=head;
      if(head==null){
         System.out.println("链表为空");

      }else{
		//删除节点的时候我们要获取要删除节点的前一个节点 
		//然后把这前一个节点的next指向删除节点的后一个节点 这样就删除了
		//这里处理的是首节点
         if(ep.getId()==id){
            if(ep.getNext()==null){
               head=null;
            }else{
               Emp nep= ep.getNext();
               ep.setNext(nep.getNext());
            }

         }else{
		//这里处理的是非首节点
            while(ep!=null) {
               if (ep.getNext().getId() == id) {
                  Emp nep= ep.getNext();
                  ep.setNext(nep.getNext());
                  break;
               } else {
                  ep = ep.getNext();
               }

            }

         }

         }




   }

   //遍历打印
   public Emp getEmpById(int id){
      Emp ep=head;
      if(head==null){
         System.out.println("链表为空");
         return null;
      }else{
         while(ep!=null) {

            if (ep.getId() == id) {
               return ep;
            } else {
               ep = ep.getNext();
            }
         }
      }
      return null;
   }

   public void toStringEmp(){
       Emp ep=head;
      if(ep==null){
         System.out.println("该emp链表为空");
        
      }else{
         while(ep!=null){
            System.out.println(ep.toString());
            if(ep.getNext()==null){

               break;
            }else{
               ep=ep.getNext();
            }

         }
      }

   }



   public Emp getHead() {
      return head;
   }

   public void setHead(Emp head) {
      this.head = head;
   }

   public Emp getEnd() {
      return end;
   }

   public void setEnd(Emp end) {
      this.end = end;
   }
}

简简单单把链表放数组里面
package Hashtable;

public class myHashTable {
    private EmplinkedList[] emplinkedLists;
    private int size ;
    public myHashTable(int size) {
        this.size = size;
        this.emplinkedLists=new EmplinkedList[size];
        for (int i=0;i 
简简单单的测试 
package Hashtable;

import org.junit.Test;

public class test {
    @Test
    public void test(){
        myHashTable myHashTable = new myHashTable(2);
        myHashTable.add(new Emp(1,"tom"));
        myHashTable.add(new Emp(2,"cat"));
        myHashTable.add(new Emp(3,"jack"));
        myHashTable.add(new Emp(3,"jack"));
       myHashTable.toStringAllEmp();
        System.out.println("==========");
        myHashTable.deleteEmpById(3);
        myHashTable.toStringAllEmp();

//        Emp empById = myHashTable.getEmpById(1);
//        String s = empById.toString();
//        System.out.println(s);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781448.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号