难道这里的key值是Map中存放的Student的id属性?
Student类代码如下:
/**
* 学生类
* @author yang
*2017年1月9日
*/
public class Student {
public String id;
public String name;
public Setcourses;
public Student(String id,String name){
this.id=id;
this.name=name;
this.courses=new HashSet();
}
}
public MapTest(){
students=new HashMap();
}
/**
* 测试添加:键入学生ID,判断是否被占用,
* 若未被占用,则输入姓名,创建新学生对象,并且添加到students中
* @param args
*/
public void testPut(){
Scanner console=new Scanner(System.in);
int i=0;
while(i<3){
System.out.println("请输入学生ID");
String ID=console.next();
Student st=students.get(ID);
if(st==null){
//提示输入学生姓名
System.out.println("请输入学生姓名");
String name=console.next();
Student newStudent=new Student(ID, name);
students.put(ID, newStudent);
System.out.println("成功添加学生"+students.get(ID).name+students.get(ID).id);
i++;
}
else{
System.out.println("该学生ID已被占用");
continue;
}
}
}
/**
* 测试Map的keySet方法
* @param args
*/
public void testKeySet(){
//通过keySet方法,返回Map中的所有“键”的Set集合
//Map的keySet方法,返回的是Map中所有"键"的Set集合,Set集合哟!!!
Set keySet=students.keySet();
//遍历KeySet,取得每一个键,再调用get方法取得每个键对应的value。
System.out.println("总共有"+students.size()+"个学生");
for(String stuId:keySet){
Student st=students.get(stuId);
if(st!=null){
System.out.println("学生"+st.name);
}
}
}