代碼中63行,st什么時(shí)候會(huì)是null
put()方法中,Key參數(shù)和Value參數(shù)都是一一對(duì)應(yīng)輸入的,因此應(yīng)該是有Key值必有Value值啊,什么時(shí)候會(huì)出現(xiàn)有Key值但是卻沒Value值得情況?
package?com.imooc.collection; import?java.util.HashMap; import?java.util.Map; import?java.util.Map.Entry; import?java.util.Scanner; import?java.util.Set; public?class?MapTest?{ /** ?*?用來承裝學(xué)生類型對(duì)象 ?*/ public?Map<String,?Student>?students; /** ?*?在構(gòu)造器中初始化students屬性 ?*/ public?MapTest()?{ this.students?=?new?HashMap<String,?Student>(); } /** ?*?測(cè)試添加:輸入學(xué)生ID,判斷是否被占用?若未被占用,則輸入姓名,創(chuàng)建新學(xué)生對(duì)象,并且?添加到students中 ?*/ public?void?testPut()?{ //?創(chuàng)建一個(gè)Scanner對(duì)象,用來獲取輸入的學(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?name?=?console.next(); //?創(chuàng)建新的學(xué)生對(duì)象 Student?newStudent?=?new?Student(ID,?name); //?通過調(diào)用students的put方法,添加ID-學(xué)生映射 students.put(ID,?newStudent); System.out.println("成功添加學(xué)生:"?+?students.get(ID).name); i++; }?else?{ System.out.println("該學(xué)生ID已被占用!"); continue; } } } /** ?*?測(cè)試Map的keySet方法 ?*/ public?void?testKeySet()?{ //?通過keySet方法,返回Map中的所有“鍵”的Set集合 Set<String>?keySet?=?students.keySet(); //?取得students的容量 System.out.println("總共有:"?+?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); } } /** ?*?測(cè)試刪除Map中的映射 ?*/ public?void?testRemove()?{ //?獲取從鍵盤輸入的待刪除學(xué)生ID字符串 Scanner?console?=?new?Scanner(System.in); while?(true)?{ //?提示輸入待刪除的學(xué)生的ID System.out.println("請(qǐng)輸入要?jiǎng)h除的學(xué)生ID!"); String?ID?=?console.next(); //?判斷該ID是否有對(duì)應(yīng)的學(xué)生對(duì)象 Student?st?=?students.get(ID); if?(st?==?null)?{ //?提示輸入的ID并不存在 System.out.println("該ID不存在!"); continue; } students.remove(ID); System.out.println("成功刪除學(xué)生:"?+?st.name); break; } } /** ?*?通過entrySet方法來遍歷Map ?*/ public?void?testEntrySet()?{ //?通過entrySet方法,返回Map中的所有鍵值對(duì) Set<Entry<String,?Student>>?entrySet?=?students.entrySet(); for?(Entry<String,?Student>?entry?:?entrySet)?{ System.out.println("取得鍵:"?+?entry.getKey()); System.out.println("對(duì)應(yīng)的值為:"?+?entry.getValue().name); } } /** ?*?利用put方法修改Map中的已有映射 ?*/ public?void?testModify()?{ //?提示輸入要修改的學(xué)生ID System.out.println("請(qǐng)輸入要修改的學(xué)生ID:"); //?創(chuàng)建一個(gè)Scanner對(duì)象,去獲取從鍵盤上輸入的學(xué)生ID字符串 Scanner?console?=?new?Scanner(System.in); while?(true)?{ //?取得從鍵盤輸入的學(xué)生ID String?stuID?=?console.next(); //?從students中查找該學(xué)生ID對(duì)應(yīng)的學(xué)生對(duì)象 Student?student?=?students.get(stuID); if?(student?==?null)?{ System.out.println("該ID不存在!請(qǐng)重新輸入!"); continue; } //?提示當(dāng)前對(duì)應(yīng)的學(xué)生對(duì)象的姓名 System.out.println("當(dāng)前該學(xué)生ID,所對(duì)應(yīng)的學(xué)生為:"?+?student.name); //?提示輸入新的學(xué)生姓名,來修改已有的映射 System.out.println("請(qǐng)輸入新的學(xué)生姓名:"); String?name?=?console.next(); Student?newStudent?=?new?Student(stuID,?name); students.put(stuID,?newStudent); System.out.println("修改成功!"); break; } } /** ?*?@param?args ?*/ public?static?void?main(String[]?args)?{ MapTest?mt?=?new?MapTest(); mt.testPut(); mt.testKeySet(); //?mt.testRemove(); //?mt.testEntrySet(); //?mt.testModify(); //?mt.testEntrySet(); } }
2016-12-27
大哥,你把代碼貼出來行嗎?