import java.util.HashSet;
import java.util.Set;
 
 
//创建学生类
public class student {
String id;        //学号
String sname;     //学生姓名
public Set<course> courses;   //学生备选课程属性(添加泛型)
public student(String id,String sname){
this.id=id;
this.sname=sname;
this.courses=new HashSet<course>();   //初始化courses属性,将其构造为HashSet类型(实例化);
}
 
}
 
 
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
 
public class MapTest {
 
//创建students属性,用来承装学生类型对象
public Map <String,student> 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);
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).sname);
i++;
}
else {
System.out.println("该学生ID已经被占用");
    continue;
}
}
    }
/*
通过keySet方法遍历Map
 */
public void testKeySet(){
//通过keySet方法,返回Map中的所有“键”的Set集合
Set <String> KeySet=students.keySet();
//遍历keySet,取得每一个键,在调用get()方法取得每一个键所对应的value
//取得students的容量
System.out.println("总共有:"+students.size()+"个学生");
for(String stuid:KeySet){
student st=students.get(stuid);
if(st!=null)
System.out.println("学生:"+st.sname); 
} 
}
/*
通过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().sname);
}
}
/*
利用put方法修改Map中已有的映射
 */
public void testModify(){
//提示输入待修改学生的ID
while(true){
//取得从键盘输入的学生ID
System.out.println("请输入要修改的学生ID:");
Scanner input=new Scanner(System.in);
String stuID=input.next();
//判断该ID是否有对应的学生对象
              student st=students.get(stuID);
              if(st==null){
             提示输入的ID并不存在
             该ID不存在,请重新输入!");
                  continue;
              }
提示当前ID对应的学生对象的姓名
当前ID所对应的学生姓名为:"+st.sname);
提示输入当前ID所对应的学生对象新的姓名,来修改已有的映射
请输入新的学生姓名:");
              String name=input.next();
              student newstudent=new student(stuID,name);
              students.put(stuID, newstudent);
修改成功");
              break;
              
}     
}
/*
测试删除Map中的映射
 */
public void testRemove(){
//提示输入待删除学生的ID
while(true){
System.out.println("请输入要删除的学生ID:");
Scanner input=new Scanner(System.in);
String ID=input.next();
//判断该ID是否有对应的学生对象
              student st=students.get(ID);
              if(st==null){
             提示输入的ID并不存在
             该ID不存在");
                  continue;
              }
              students.remove(ID);
成功删除学生:"+st.sname);
              break;
}  
}
public static void main(String[] args) {
// TODO Auto-generated method stub
         MapTest mt=new MapTest();
         mt.testPut();
         mt.testKeySet();
         mt.testRemove();
         mt.testentrySet();
         mt.testModify();
         mt.testentrySet();
}
 
}