• 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();
        }
    
    }
  • 相关阅读:
    无法删除文件提示找不到指定文件导致文件无法删除的解决方法
    c++多线程编程(三)
    c++多线程编程(二)
    c++多线程编程(一)
    面试中的C++常见问题
    展示组件(Presentational component)和容器组件(Container component)之间有何不同
    如果你创建了类似于下面的 Twitter 元素,那么它相关的类定义是啥样子的?
    React 中 refs 的作用是什么?
    typescript 类(类的定义、继承、修饰符、抽象类)
    typescript 接口 interface
  • 原文地址:https://www.cnblogs.com/vincenshen/p/10159195.html
Copyright © 2020-2023  润新知