为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不能用注释掉的两行去替代下面的两行,必须要新建Student对象来接收键盘输入

package com.imooc.collection;

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

public class MapTest {
    /**
     * 创建Map类型的属性用于存储学生对象
     */
    public Map<String,Student> students;

    /**
     * 在构造器中初始化students属性
     */
    public MapTest(){
        this.students=new HashMap<String,Student>();
    }

    /**测试添加,输入学生ID,查找如果存在就返回
     * 如果不存在就输入姓名,创建学生对象,并且添加到students中*/
    public void testPut()
    {
        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);//使用键值 String ID去获取实值Student
            if(st==null){
                System.out.println("请输入学生的姓名");
//                st.setName(console.next());
//                st.setId(ID);
                String name=console.next();
                Student newStu=new Student(ID,name);
                
                students.put(ID,newStu);
                System.out.println("成功添加一个学生,ID="+ID+"NAME="+newStu.getName());
                i++;
            }
            else
            {
                System.out.println("该学生已经存在");
                continue;
            }

        }
    }

    /**
     * 测试keySet方法遍历Map中的元素*/
    void testKeySet()
    {
        //因为students的键值是String类型的,所以需要String类型的Set泛型去接收它的值
        //浙江keySet对象就存储了Map中所有“键值”
        Set<String> keySet=students.keySet();
        //取得students的容量
        System.out.println("Map容器中的students对象大小为:"+students.size());
        //遍历所有的keySet取得每个键值,然后用get方法取得每个实值
        for (String stuId:keySet ) {
            Student st=students.get(stuId);
            if(st!=null)
                System.out.println("学生的名字是:"+st.getName());
        }

    }


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


    }
}


正在回答

2 回答

没有student对象,你这么用setXxx()方法呢

0 回复 有任何疑惑可以回复我~
// 根据构造函数中的HashMap键值对类型确定
this.students=new HashMap<String,Student>();
// HashMap没有setName()和setId()方法,除非你自己实现


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么不能用注释掉的两行去替代下面的两行,必须要新建Student对象来接收键盘输入

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信