Java Map增刪改查


示例代碼:

學生類

package com.imooc.collection;

import java.util.HashSet;
import java.util.Set;

/**
 * 學生類
 * Set中的元素是唯一的,不會重復,但是沒有順序。
 */

public class Student {

    private String id;

    private String name;

    // set集合只能使用 foreach 或 iterator進行遍歷,不能使用get()來獲取元素
    public Set <Course> course;

    public Student(){

    }

    public Student(String id, String name){
        this.id = id;
        this.name = name;
        this.course = new HashSet<>();
    }

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

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

    public void setCourse(Set<Course> course) {
        this.course = course;
    }

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public Set getCourse() {
        return this.course;
    }
}

 

學生集合

package com.imooc.map;

import com.imooc.collection.Student;

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

public class MapTest {

    /**
     * 用來承裝學生類型對象
     */
    private final Map<String, Student> students = new HashMap<>();

    /**
     * 在構造器中初始化students屬性
     */

    public MapTest(){
    }

    /**
     * 測試添加:輸入學生ID,判斷是否被占用
     * 若未被占用,則輸入姓名,創建新學生對象,並且添加到Students中
     */
    private void testPut(){
        // 創建一個Scanner對象,用來獲取輸入的學生ID和姓名
        Scanner console = new Scanner(System.in);
        int i = 0;
        while (i < 3){
            System.out.println("請輸入學生ID:");
            String ID = console.next();
            // 判斷該ID是否被占用
            Student st = students.get(ID);
            if (st == null) {
                // 提示輸入學生姓名
                System.out.println("請輸入學生姓名:");
                String name =  console.next();
                // 創建新的學生對象
                Student newStudent = new Student(ID, name);
                // 通過調用students的put方法,添加ID-學生映射
                students.put(ID, newStudent);
                System.out.println("成功添加學生:" + students.get(ID).getName());
                i ++;
            } else {
                System.out.println("該學生ID已被占用!");
            }
        }
    }

    /**
     * 通過keySet方法來遍歷Map
     */
    private void testKeySet(){
        // 通過keySet方法,獲取Map中所有的"鍵"集合
        Set<String> keySet = students.keySet();
        System.out.println("共獲取:" + keySet.size() + " 個學生!");

        // 通過Key從Students中獲取Student對象
        for(String stuId: keySet){
            Student st = students.get(stuId);
            System.out.println("學生ID:" + st.getId() + "; 學生姓名:" + st.getName());
        }
    }


    /**
     * 通過 entrySet方法來遍歷Map
     */
    private void testEntrySet(){
        // 通過entrySet方法,返回Map中的所有"鍵值對"
        Set<Map.Entry<String, Student>> entrySet = students.entrySet();
        for(Map.Entry<String, Student> entry: entrySet){
            System.out.println("從EntrySet中獲取鍵:" + entry.getKey());
            System.out.println("從EntrySet中獲取值:" + entry.getValue().getName());
        }
    }


    /**
     * 測試刪除Map中的元素
     */
    private void testRemove(){
        // 提示輸入待刪除學生的ID
        Scanner console = new Scanner(System.in);
        while(true){
            System.out.println("請輸入要刪除的學生ID:");
            String ID = console.next();
            Student st = students.get(ID);
            if (st == null) {
                System.out.println("該ID不存在!");
                continue;
            }
            students.remove(ID);
            System.out.println("成功刪除學生:" + st.getName());
            break;
        }
    }

    /**
     * 測試修改Map中的元素: replace or put 都可以實現
     */
    private void testModify(){
        // 提示輸入待修改的學生ID
        Scanner console = new Scanner(System.in);
        while (true){
            System.out.println("請輸入要修改的學生ID:");
            String ID = console.next();
            Student st = students.get(ID);
            if (st == null) {
                System.out.println("該學生ID不存在,請重新輸入!");
            } else {
                System.out.println("請輸入要修改的學生姓名:");
                String name = console.next();
                Student newST = new Student(ID, name);
                students.replace(ID, newST);
                break;
            }

        }
    }


    public static void main(String[] args){
        MapTest mt = new MapTest();
        mt.testPut();
        mt.testKeySet();
        mt.testRemove();
        mt.testEntrySet();

        mt.testModify();
        mt.testEntrySet();
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM