為什么兩個(gè)不同地方的students.get(ID),一個(gè)可以直接用創(chuàng)建的對(duì)象st來(lái)代替,另一個(gè)卻不可以用st代替?
public void testPut() {
// 創(chuàng)建一個(gè)Scanner對(duì)象,用來(lái)獲取輸入的學(xué)生ID和姓名
Scanner console = new Scanner(System.in);
int i = 0;
while (i < 3) {
System.out.println("請(qǐng)輸入學(xué)生ID:");
String ID = console.next();
// 判斷該ID是否被占用
Student st = students.get(ID);
if (st == null) {
// 提示輸入學(xué)生姓名
System.out.println("請(qǐng)輸入學(xué)生姓名:");
String name1 = console.next();
// 創(chuàng)建新的學(xué)生對(duì)象
Student newStudent = new Student(ID, name1);
// 通過(guò)調(diào)用students的put方法,添加ID-學(xué)生映射
students.put(ID, newStudent);
System.out.println("成功添加學(xué)生:" +students.get(ID).name+"\n");? ? ? ? ? ? ? ? ?//為什么這里的students.get(ID)不可以用st代替?
i++;
} else {
System.out.println("該學(xué)生ID已被占用!");
continue;
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void testKeySet() {
// 通過(guò)keySet方法,返回Map中的所有“鍵”的Set集合
Set<String> keySet = students.keySet();
// 取得students的容量
System.out.println("\n"+"總共有:" + students.size() + "個(gè)學(xué)生!");
// 遍歷keySet,取得每一個(gè)鍵,再調(diào)用get方法取得每個(gè)鍵對(duì)應(yīng)的value
for (String stuId : keySet) {
Student st = students.get(stuId);
if (st != null)
System.out.println("學(xué)生:" + st.name);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???//為什么這里的students.get(ID)又可以用st代替?
}
}
2018-09-16
好吧,我好像已經(jīng)明白了