慕村0590769
2021-04-10 17:37
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(); } }
没有student对象,你这么用setXxx()方法呢
// 根据构造函数中的HashMap键值对类型确定 this.students=new HashMap<String,Student>(); // HashMap没有setName()和setId()方法,除非你自己实现
Java入门第三季
409771 学习 · 4363 问题
相似问题