package?com.xueshengguanli;
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中
?????*?@param?args
?????*?@return?
?????*/
?????public?void?testPut()?{
?????????Scanner?in=new?Scanner(System.in);
?????????int?i=0;
?????????while(i<3)?{
?????????????System.out.println("請輸入學生id");
?????????????String?id=in.next();
?????????????//判斷id是否被占用
?????????????Student?st=students.get(id);
?????????????if(st==null)?{
?????????????????System.out.println("請輸入學生姓名");
?????????????????String?name=in.next();
?????????????????Student?newStudent=new?Student(id,name);
?????????????????students.put(id,?newStudent);
?????????????????System.out.println("成功添加學生"+students.get(id).name);
?????????????????i++;
?????????????}else?{
?????????????????System.out.println("學生id已被占用");
?????????????????continue;
?????????????}
?????????}
?????}
?????
?????/**
??????*?測試map的keySet方法
??????*?
??????*?@param?args
??????*/
?????public?void?testKeySet()?{
?????????//通過keySet方法,返回Map中所有"鍵"的set集合
?????????Set<String>?keySet=students.keySet();
?????????//取得students容量
?????????System.out.println("總共有"+students.size()+"個學生");
?????????//通過遍歷keySet對象,來取得map中每一個鍵,再調用map的get方法取得每個鍵對應的value
?????????for(String?stuid:keySet)?{
?????????????Student?st=students.get(stuid);
?????????????if(st!=null)?{
?????????????????System.out.println("學生:"+st.name);
?????????????}
?????????}
?????}
?????
?????public?void?testRemove()?{
?????????Scanner?in=new?Scanner(System.in);
?????????while(true)?{
?????????????System.out.println("請輸入要刪除的學生id");
?????????????String?id=in.next();
?????????????Student?st=students.get(id);
?????????????if(st==null)?{
?????????????????System.out.println("沒有此人");
?????????????????continue;
?????????????}else?{
?????????????????students.remove(id);
?????????????????System.out.println("學生"+st.name+"已經刪除");
?????????????????break;
?????????????}
?????????}
?????}
?????
?????public?void?testEntrySet()?{
?????????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??mp=new?MapTest();
????mp.testPut();
????mp.testKeySet();
????mp.testRemove();
????mp.testEntrySet();
????}
}
運行結果:請輸入學生id
1
請輸入學生姓名
we
成功添加學生1
請輸入學生id
2
請輸入學生姓名
rng
成功添加學生2
請輸入學生id
3
請輸入學生姓名
ig
成功添加學生3
總共有3個學生
學生:1
學生:2
學生:3
請輸入要刪除的學生id
2
學生2已經刪除
取得鍵1
對應值為1
取得鍵3
對應值為3
2018-08-07
查看Student類中 ?public Student(String id,String name) 是否正確
是不是 String id和String name寫反了