Map

clipboard.png

clipboard.png

clipboard.png

创建MapTest类

/imooc_collection_map_demo/src/com/imooc/collection/MapTest.java

clipboard.png

增加学生

package com.imooc.collection;

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



public class MapTest {
    //用来承装学生类型对象
    public Map<String, Student> students;
    //在构造器中初始化students的属性
    public MapTest() {
        this.students = new HashMap<String,Student>();
    }
    //测试添加:输入学生ID,判断是否被占用,
//    若未被占用,则输入姓名,创建新学生对象 
//    并且添加到students中
    public 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).name);
                i++;
            }else {
                System.out.println("该学生ID已被占用!");
                continue;
            }
        }
    }
        
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MapTest mTest = new MapTest();
        mTest.testPut();

    }

}

遍历学生

代码

package com.imooc.collection;

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



public class MapTest {
    //用来承装学生类型对象
    public Map<String, Student> students;
    //在构造器中初始化students的属性
    public MapTest() {
        this.students = new HashMap<String,Student>();
    }
    //测试添加:输入学生ID,判断是否被占用,
//    若未被占用,则输入姓名,创建新学生对象 
//    并且添加到students中
    public 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).name);
                i++;
            }else {
                System.out.println("该学生ID已被占用!");
                continue;
            }
        }
    }
    
    public void testKeySet() {
        //通过keySet方法,返回Map中的所有 键 的Set集合
        Set<String> keySet = students.keySet();
        //取得students的容量
        System.out.println("总共有:" + students.size() + "个学生");
        //遍历keySet,取得每一个键,再调用get方法取得每个键对应的value
        for(String stuId:keySet) {
            Student st = students.get(stuId); 
            if(st!= null) {
                System.out.println("学生:" + st.name);
            }
        }
    }
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MapTest mTest = new MapTest();
        mTest.testPut();
        mTest.testKeySet();

    }

}

效果

  1. 输入学生id,然后输入学生名
  2. 如果学生id已经存在,则重新输入id
  3. 输够3个item,则遍历打印

clipboard.png

clipboard.png

删除学生

package com.imooc.collection;

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



public class MapTest {
    //用来承装学生类型对象
    public Map<String, Student> students;
    //在构造器中初始化students的属性
    public MapTest() {
        this.students = new HashMap<String,Student>();
    }
    //测试添加:输入学生ID,判断是否被占用,
//    若未被占用,则输入姓名,创建新学生对象 
//    并且添加到students中
    public 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).name);
                i++;
            }else {
                System.out.println("该学生ID已被占用!");
                continue;
            }
        }
    }
    
    public void testKeySet() {
        //通过keySet方法,返回Map中的所有 键 的Set集合
        Set<String> keySet = students.keySet();
        //取得students的容量
        System.out.println("总共有:" + students.size() + "个学生");
        //遍历keySet,取得每一个键,再调用get方法取得每个键对应的value
        for(String stuId:keySet) {
            Student st = students.get(stuId); 
            if(st!= null) {
                System.out.println("学生:" + st.name);
            }
        }
    }
    
    //测试删除Map中的映射
    public void testRemove() {
        //提示输入待删除的学生的ID
        System.out.println("输入要删除的学生的ID");
        //获取从键盘输入的待删除学生ID字符串
        Scanner console = new Scanner(System.in);

        while(true) {
            String ID = console.next();
            //判断该ID是否有对应的学生对象
            Student st = students.get(ID);
            if(st == null) {
                System.out.println("该ID不存在");
                continue;
            }
            students.remove(ID);
            System.out.println("成功删除学生" + st.name);
            break;
            
        }
    }
    
    //通过entrySet方法来遍历Map
    public void testEntrySet() {
        //通过entrySet方法,返回Map中的所有键值对
        Set<Entry<String,Student>> entrySet = students.entrySet();
        for(Entry<String,Student> entry : entrySet) {
            System.out.println("取得键" + entry.getKey());
            System.out.println("对应的值为" + entry.getValue().name);
        }
    }
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MapTest mTest = new MapTest();
        mTest.testPut();
        mTest.testKeySet();
        mTest.testRemove();
        mTest.testEntrySet();
    }

}

clipboard.png

编辑学生

代码

package com.imooc.collection;

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



public class MapTest {
    //用来承装学生类型对象
    public Map<String, Student> students;
    //在构造器中初始化students的属性
    public MapTest() {
        this.students = new HashMap<String,Student>();
    }
    //测试添加:输入学生ID,判断是否被占用,
//    若未被占用,则输入姓名,创建新学生对象 
//    并且添加到students中
    public 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).name);
                i++;
            }else {
                System.out.println("该学生ID已被占用!");
                continue;
            }
        }
    }
    
    public void testKeySet() {
        //通过keySet方法,返回Map中的所有 键 的Set集合
        Set<String> keySet = students.keySet();
        //取得students的容量
        System.out.println("总共有:" + students.size() + "个学生");
        //遍历keySet,取得每一个键,再调用get方法取得每个键对应的value
        for(String stuId:keySet) {
            Student st = students.get(stuId); 
            if(st!= null) {
                System.out.println("学生:" + st.name);
            }
        }
    }
    
    //测试删除Map中的映射
    public void testRemove() {
        //提示输入待删除的学生的ID
        System.out.println("输入要删除的学生的ID");
        //获取从键盘输入的待删除学生ID字符串
        Scanner console = new Scanner(System.in);

        while(true) {
            String ID = console.next();
            //判断该ID是否有对应的学生对象
            Student st = students.get(ID);
            if(st == null) {
                System.out.println("该ID不存在");
                continue;
            }
            students.remove(ID);
            System.out.println("成功删除学生" + st.name);
            break;
            
        }
    }
    
    //通过entrySet方法来遍历Map
    public void testEntrySet() {
        //通过entrySet方法,返回Map中的所有键值对
        Set<Entry<String,Student>> entrySet = students.entrySet();
        for(Entry<String,Student> entry : entrySet) {
            System.out.println("取得键" + entry.getKey());
            System.out.println("对应的值为" + entry.getValue().name);
        }
    }
    
    //利用put方法修改Map中已有的映射
    public void testModify() {
        //提示输入待修改的学生的ID
        System.out.println("输入要修改的学生的ID");
        //获取从键盘输入的待修改学生ID字符串
        Scanner console = new Scanner(System.in);
        while(true) {
            //取得从键盘输入的学生ID
            String stuID = console.next();
            //判断该ID是否有对应的学生对象
            Student student = students.get(stuID);
            if(student == null) {
                System.out.println("该ID不存在");
                continue;
            }
            //提示当前对应的学生对象的姓名
            System.out.println("当前该学生ID,所对应的学生为:" + student.name);
            //提示输入新的学生姓名,来修改已有的映射
            System.out.println("请输入新的学生姓名");
            String name = console.next();
            Student newStudent = new Student(stuID, name);
            students.put(stuID, newStudent);
            System.out.println("修改成功");
            break;
        }
    }
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MapTest mTest = new MapTest();
        mTest.testPut();
        mTest.testKeySet();    
    
        mTest.testModify();
        mTest.testEntrySet();
    }

}

实现

clipboard.png

clipboard.png


渣渣辉
1.3k 声望147 粉丝