package?Test;
import?java.util.HashMap;
import?java.util.Map;
import?java.util.Scanner;
import?java.util.Set;
public?class?MapTest?{
????//?創建一個承接學生類型對象的Map屬性
????public?Map<String,Student>?students;
????//?構造器中初始化student屬性
????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();
????????????????//創建新的學生對象newStudent,把ID和name傳遞進去
????????????????Student?newStudent?=?new??Student(ID,name);
????????????????//通過調用students的put方法,添加ID-學生映射
????????????????students.put(ID,newStudent);
????????????????//通過students的get方法取得和ID對應的姓名對象
????????????????System.out.println("成功添加學生:"+students.get(ID).getName());
????????????????i++;
????????????}else?{
????????????????System.out.println("該學生ID已被占用!");
????????????????continue;
????????????}
????????}
????}
????//測試Map的keSet方法
????public?void?testKeySet()?{
????????//因為通過泛型規定了鍵的類型是String,所以要通過泛型為String的Set對象接收keySet方法的返回值
????????//通過keySet方法,返回Map中的所有“鍵”的Set集合
????????Set<String>?keySet?=?students.keySet();
????????//?取得students的容量
????????System.out.println("總共有:"+students.size()+"名學生");
????????//?遍歷keySet對象,取得每一個鍵,在調用gei方法取得每個鍵對應的value
????????for?(String?stuId?:?keySet)?{
?????????????Student?st?=?students.get(stuId);??//取值
????????????if?(st?!=?null)?{
????????????????System.out.println("學生:"+st.getName());
????????????}
????????}
????}
????public?static?void?main(String[]?args)?{
????????MapTest?mt?=?new?MapTest();
????????mt.testPut();
????????mt.testKeySet();
????}
}
2019-10-30
我和你一樣。用的myeclipse。都是順序的
2019-07-01
巧合,多運行幾次