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

}
原文地址:https://www.cnblogs.com/vincenshen/p/10159195.html