輸出順序始終是根據(jù)id大小來排序的
package?com.demo.zhq; 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é)生的類型對象 ?*?@param?args ?*/ public?Map<String,?Student>students; private?Scanner?console; private?Scanner?b; private?Scanner?a; /** ?*?構(gòu)造器中初始化students屬性 ?*/ public?MapTest(){ this.students?=?new?HashMap<String,Student>(); } /** ?*?測試添加:輸入學(xué)生ID,判斷是否被占用 ?*?若未被占用,則輸入姓名,創(chuàng)建學(xué)生對象,并且添加到students中 ?*? ?*?@param?args ?*/ public?void?testPut(){ console?=?new?Scanner(System.in); int?i?=?0; while(i?<?3){ System.out.println("請輸入學(xué)生ID:"); String?ID?=?console.next(); //判斷該ID是否被占用 Student?st?=?students.get(ID); if?(st?==?null)?{ //提示輸入學(xué)生姓名 System.out.println("請輸入學(xué)生姓名:"); String?name?=?console.next(); //創(chuàng)建一個(gè)新的對象 Student?newStudent?=?new?Student(ID,?name); //通過調(diào)用stdents的put方法,添加?ID-學(xué)生映射 students.put(ID,?newStudent); System.out.println("成功添加學(xué)生:"+students.get(ID).name); i++; }else?{ System.out.println("該學(xué)生ID已被占用!"); continue;? } } } /** ?*?測試Map的keySet方法 ?*?@param?args ?*/ 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è)鍵對應(yīng)的value for(String?stuId?:?keySet){ Student?st?=?students.get(stuId); if?(st?!=?null)?{ System.out.println("學(xué)生:"+st.name); } } } /** ?*?測試Map的刪除映射 ?*?@param?args ?*/ public?void?testRemove()?{ b?=?new?Scanner(System.in); ?while?(true)?{ ?//提示輸入刪除學(xué)生的ID ?System.out.println("請輸入要?jiǎng)h除的學(xué)生ID:"); ?String?ID?=?b.next(); ?//判斷該ID是否有對應(yīng)的學(xué)生對象 ?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 ?*? ?*?@param?args ?*/ public?void?testEntrySet(){ //通過entrySet方法,返回Map中的所有鍵值對 Set<Entry<String,Student>>?entrySet?=?students.entrySet(); System.out.println("刪除后還剩"+entrySet.size()+"名學(xué)生,分別是:"); for?(Entry<String,?Student>?entry?:?entrySet)?{ System.out.print("鍵值:"+entry.getKey()+","); System.out.println("姓名:"+entry.getValue().name); } } /** ?*?利用put方法修改Map中的已有映射 ?*?@param?args ?*/ public?void?testModify(){ //提示輸入要修改的學(xué)生ID System.out.println("請輸入要修改的學(xué)生ID:"); a?=?new?Scanner(System.in); while?(true)?{ //取得從鍵盤輸入的學(xué)生ID String?stuID?=?a.next(); //從students中查找該學(xué)生ID對應(yīng)的學(xué)生對象 Student?student?=?students.get(stuID); } } public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub MapTest?mt?=?new?MapTest(); mt.testPut(); mt.testKeySet(); mt.testRemove(); mt.testEntrySet(); } }
為什么我的輸出順序是根據(jù)輸入的id來的啊,每次都是一樣的1,2,3的順序,N次了
2017-08-13
只是湊巧,上面這個(gè)老哥已經(jīng)說很清楚了
2017-07-20
湊巧而已,多試幾次再看看,
HashMap是無序的,TreeMap是有序的