1. 程式人生 > 其它 >HashMap的簡單案例

HashMap的簡單案例

在記憶體中的學生資訊管理系統

一、增刪改查方法類

package com.csoracle.練習;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

public class StudentSystem {

    private static final HashMap students = new HashMap();
    private static final Scanner sc = new Scanner(System.in);

    public void start() {
        System.out.println(">>>>>>>>>>>>>>>>>歡迎來到J09的學生管理系統<<<<<<<<<<<<<<<<<<");
        wecome();
    }

    public void wecome() {
        System.out.println("請你選擇需要執行的操作:");
        System.out.print("0、按學號查詢學生資訊,");
        System.out.print("1、新增學生的個人資訊,");
        System.out.print("2、按學號刪除學生資訊" + "\n");
        System.out.print("3、按學號更改學生資訊,");
        System.out.print("4、檢視所以的學生資訊,");
        System.out.println("5、退出資訊管理系統..");
        System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
        choose();
    }

    public void choose() {
        System.out.print("你選擇的操作:");
        int i = sc.nextInt();
        while (true) {
            change(i);
        }
    }

    public void change(int i) {
        switch (i) {
            case 0:
                System.out.println("按學號查詢學生資訊");
                showIndex();
                wecome();
            case 1:
                System.out.println("新增學生的個人資訊");
                add();
                wecome();
                break;
            case 2:
                System.out.println("按學號刪除學生資訊");
                remove();
                wecome();
                break;
            case 3:
                System.out.println("按學號更改學生資訊");
                changeStu();
                wecome();
                break;
            case 4:
                System.out.println("檢視所以的學生資訊");
                showAll();
                wecome();
                break;
            case 5:
                System.out.println("退出資訊管理系統中..");
                System.out.println("退出成功!");
                System.exit(0);
                break;
            default:
                System.out.println("輸入不合法");
                wecome();
                break;
        }
    }

    public void add() {
        StudentNode student = new StudentNode();

        System.out.print("輸入學號:");
        student.setNumber(sc.nextInt());

        System.out.print("輸入名字:");
        student.setName(sc.next());

        System.out.print("輸入年齡:");
        student.setAge(sc.nextInt());

        System.out.print("輸入性別:");
        student.setSex(sc.next());

        if (students.containsKey(student.getNumber())) {
            System.out.print("該學號已有學生,是否繼續:(y/n)");
            String isContinue = sc.next();
            if ("n".equals(isContinue)) {
                System.out.println("新增失敗");
                return;
            }
        }
        students.put(student.getNumber(), student);
        System.out.println("新增成功:" + student);

    }

    public void changeStu() {
        StudentNode student = new StudentNode();

        System.out.print("輸入要更改學生資訊的學號:");
        int index = sc.nextInt();

        StudentNumberJudgment(index);

        student.setNumber(index);
        System.out.print("輸入名字:");
        student.setName(sc.next());

        System.out.print("輸入年齡:");
        student.setAge(sc.nextInt());

        System.out.print("輸入性別:");
        student.setSex(sc.next());

        students.put(student.getNumber(), student);

        System.out.println("修改成功!");

    }

    // fast-tail
    public void remove() {
        System.out.print("輸入要刪除學生資訊的學號:");
        int index = sc.nextInt();

        StudentNumberJudgment(index);

        /*Set set = students.keySet();
        for (Object o : set) {
            if(o.equals(index)){
                students.remove(index);
            }
        }*/
        //很大的可能報錯,因為在迭代的時候,不允許增加刪除操作,會引起執行緒異常、不安全
        students.remove(index);
        System.out.println("刪除成功");

    }

    public void showAll() {
        Set set = students.entrySet();
        for (Object o : set) {
            System.out.println(o);
        }
    }

    public void showIndex() {
        System.out.print("輸入要查詢學生資訊的學號:");
        int index = sc.nextInt();

        StudentNumberJudgment(index);

        Object o = students.get(index);
        System.out.println(o);

    }

    public void StudentNumberJudgment(int index) {
        if (!students.containsKey(index)) {
            System.out.println("您輸入的學號不存在");
            wecome();
        } else {
            return;
        }
    }
}

二、學生實體類

package com.csoracle.練習;

import java.util.Objects;

public class StudentNode {
    private String name;
    private Integer age;
    private String sex;
    private Integer number;

    public StudentNode(String name, Integer age, String sex, Integer number) {
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.number = number;
    }

    public StudentNode() {
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getNumber() {
        return number;
    }

    public void setNumber(Integer number) {
        this.number = number;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        StudentNode that = (StudentNode) o;
        return Objects.equals(name, that.name) &&
                Objects.equals(age, that.age) &&
                Objects.equals(sex, that.sex) &&
                Objects.equals(number, that.number);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age, sex, number);
    }

    @Override
    public String toString() {
        return "StudentNode{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", number=" + number +
                '}';
    }
}

三、測試類

package com.csoracle.練習;

public class Test01 {
    public static void main(String[] args) {
        StudentSystem studentSystem = new StudentSystem();
        studentSystem.start();
      
    }
}