哈希表实现——链表形式——人员管理系统

哈希表实现——链表形式——人员管理系统

一.简介

Java写的,一边学一边敲,比较简陋,当做个纪念。

二.代码

package com.appletree24.hashtable;

import javax.swing.plaf.synth.SynthOptionPaneUI;
import java.util.Scanner;

public class HashTableDemo {
    public static void main(String[] args) {
        HashTable hashTable=new HashTable(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("del:删除雇员");
            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);
                    hashTable.add(emp);
                    break;
                case "del":
                    System.out.println("输入id");
                    id=scanner.nextInt();
                    hashTable.deleteEmp(id);
                    break;
                case "list":
                    hashTable.list();
                    break;
                case "exit":
                    scanner.close();
                    break;
                case "find":
                    System.out.println("请输入要查找的雇员ID");
                    id=scanner.nextInt();
                    hashTable.findEmpById(id);
                    break;
                default:
                    break;
            }
        }
    }
}

class HashTable{
    private EmpLinkedList[] empLinkedListArray;
    private int size;
    public HashTable(int size){
        this.size=size;
        empLinkedListArray=new EmpLinkedList[size];
        for (int i=0;iid=%d name=%s",curEmp.id,curEmp.name);
            if(curEmp.next==null){   //最后一个节点
                break;
            }
            curEmp=curEmp.next;
        }
        System.out.println();
    }

    public Emp findEmpById(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;
    }

   //传入要删除结点的上一个节点
    public boolean deleteEmp(Emp emp){
        if(head==null){
            System.out.println("链表为空,无需删除");
            return false;
        }else if(emp==null){
            System.out.println("参数错误");
            return false;
        }
        emp.next=emp.next.next;
        return true;
    }

    public Emp findEmpById_DeVer(int id){
        if(head==null){
            System.out.println("链表为空");
            return null;
        }

        if(head.id==id){
            return head;
        }

        Emp curEmp=head;
        while(curEmp.next!=null){
            if(curEmp.next.id==id){
                return curEmp;
            }
            curEmp=curEmp.next;
        }
        return null;
    }
}

Original: https://www.cnblogs.com/appletree24/p/16484123.html
Author: Appletree24
Title: 哈希表实现——链表形式——人员管理系统

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/584848/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 动态代理-jdk代理

    实现InvocationHandler接口(代理处理器) 1 package cn.learn.proxy; 2 3 import java.lang.reflect.Invoca…

    Java 2023年5月30日
    090
  • OpenFeign生产者与消费者

    用到的VO package com.datang.api.vo; import java.util.List; /** * @author 顶风少年 * @date 2022/6/…

    Java 2023年6月8日
    088
  • 关于Maven的使用

    Maven基础入门 一、maven是什么 Apache Maven,是一个项目管理及自动构建的工具,有Apache软件基金会所提供。 Maven是用Java语言编写的,是一款可以跨…

    Java 2023年6月9日
    079
  • 1.Spring Boot 的认识

    以前开发我们都是使用springMVC去开发,但是现在我们全部已经使用springboot了,因为它很方便,我也是便于从头梳理一下springboot,让自己更加深入了结sprin…

    Java 2023年6月9日
    066
  • mac 文本处理命令分享

    2 awk awk ‘{pattern + action}’ {filenames} awk是在每行处理文本的时候,默认按照空格隔离每一个域,对每一个域做处理。也可以直接通过在aw…

    Java 2023年6月7日
    092
  • 树的基本概念介绍

    为什么需要树这种数据结构 这是我本人在B站看韩顺平老师数据结构和算法的学习笔记,记录一下,防止忘记 1) 数组存储方式的分析 优点:通过 下标方式访问元素,速度快。对于有序数组,还…

    Java 2023年6月15日
    082
  • 惰性初始化

    在上面两个类定义的方法中,有一个很特殊:toString()。每一个非基本类型的对象都有一个toString()方法,而且当编译器需要一个String而你却只有一个对象时,该方法便…

    Java 2023年6月13日
    080
  • (转)libreoffice + jodconverter + Springboot 整合使用将Word转PDF

    转:https://www.codeleading.com/article/64074162845/ https://jingyan.baidu.com/article/91f5d…

    Java 2023年5月29日
    073
  • MySQL面试题

    MySql项目中使用的存储引擎 5.0之前默认存储引擎为MyISAM引擎 索引只有一种,被索引的字段值作为索引数据,叶子节点还包含该记录数据页地址 不支持事务 没有undo log…

    Java 2023年6月16日
    048
  • logback学习

    第一种配置 日志输出方式(简单的): 在application.yml 输入 xml;html-script:false;quick-code:true;smart-tabs:tr…

    Java 2023年6月13日
    073
  • dpdk在虚拟机上出错处理

    本文介绍的步骤基本适用于dpdk 1.7.0 – dpdk 2.0.0 各版本。只是setup.sh显示的菜单有一些小的不同;同样的,也适用于ubuntu更高版本(已在…

    Java 2023年5月30日
    066
  • Effective Java 第三版——78. 同步访问共享的可变数据

    Tips书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code注意,书中的有些代码里方法是基于Java 9…

    Java 2023年5月29日
    094
  • MYSQL性能优化

    启用查询缓存 特别注意:查询缓存从MySQL 5.7.20开始已被弃用,并在MySQL 8.0中被删除。、 – 一种说法是不建议使用查询缓存,因为查询缓存往往弊大于利。…

    Java 2023年6月5日
    092
  • Lambda表达式使用场景

    java;gutter:true; // list集合 ArrayList list = new ArrayList<>(); list.add(new Person(…

    Java 2023年6月15日
    079
  • Typora中Markdown学习

    可以自己设置标题级数,且各标题之间可在大纲处看到鲜明的层级关系,非常方便清楚。 “#”——一级标题 “##”——二级标题 &#822…

    Java 2023年6月5日
    0211
  • PDF转图片部分公式字符丢失问题解决的爬坑记录

    现象 PDF教材导出到系统中,由程序将PDF转为图片后合并成一张大图供前端标注,但是在标注数学和化学学科的时候且源文件是PDF的情况下出现公式部分字符丢失的情况,如下图原件 转换后…

    Java 2023年6月7日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球