package?imoocCollection;
import?java.util.HashMap;
import?java.util.Map;
import?java.util.Scanner;
import?java.util.Set;
public?class?MapTest?{
//建一個(gè)map類(lèi)型的屬性,用來(lái)承裝student對(duì)象的
public?Map<String,?Student>?students;
//在構(gòu)造方法上給students初始化
public?MapTest()?{
this.students?=?new?HashMap<String,?Student>();
}
//測(cè)試添加方法:輸入學(xué)生的ID,判斷是否被占用
//若未被占用,提示輸入學(xué)生姓名,創(chuàng)建新的學(xué)生對(duì)象,并且添加到students中
//若被占用,打印輸出,該ID已被占用
public?void?testPut()?{
//創(chuàng)建一個(gè)Scanner對(duì)象
Scanner?sc?=?new?Scanner(System.in);
for(int?i=0;?i<3;?i++)?{
?System.out.println("請(qǐng)輸入學(xué)生ID:");
?String?id?=?sc.next();
?//判斷該ID是否被占用
?Student?s?=?students.get(id);
?if(s?==?null)?{
?//提示輸入學(xué)生姓名
?System.out.println("請(qǐng)輸入學(xué)生姓名:");
?String?name?=?sc.next();
?//創(chuàng)建新的學(xué)生對(duì)象
?Student?st?=?new?Student(id,?name);
?//通過(guò)調(diào)用students的put方法添加學(xué)生到hash?map里
?students.put(id,?st);
?System.out.println("成功添加學(xué)生:"?+?students.get(id).name);
?}
?else?{
?System.out.println("該學(xué)生ID已被占用");
?continue;
?}
}
}
//測(cè)試map的keySet()方法
public?void?testKeySet()?{
//通過(guò)keySet方法返回Map中所有鍵的Set集合
Set<String>?keySet?=?students.keySet();
//取得set的容量
System.out.println("總共有:"?+?keySet.size()?+?"個(gè)學(xué)生!");
//遍歷keySet,取得每一個(gè)鍵,在調(diào)用map的get方法取得每個(gè)鍵對(duì)應(yīng)的value
for(String?s?:?keySet)?{
Student?st?=?students.get(s);
if(st?!=?null)?{
System.out.println("學(xué)生:"?+?st.name);
}
}
}
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
MapTest?mt?=?new?MapTest();
mt.testPut();
mt.testKeySet();
}
}
2018-01-10
就是三次,i=0、1、2
2018-01-15
老師的i++可以控制在if后面,跟后面else無(wú)關(guān)呀,打個(gè)比方從第二次開(kāi)始輸,若一直重復(fù)可以輸無(wú)數(shù)次,你這樣寫(xiě),如果輸入重復(fù)的也算了
2018-01-14
for循環(huán)是可以用,但你這樣寫(xiě),只能輸入三次,無(wú)論id是否重復(fù)。
如果你把i++放入if里面,只要id重復(fù),就能輸入多次,直到你正確輸入三個(gè)不重復(fù)的id為止。