關于Map無序問題
各位好!? ??????為什么我執行完Map測試后是有序的呢?代碼如下: ??????public?class?MapTest?{ ?? public? HashMap<Integer,?student>students; public?MapTest(){? this.students=new?HashMap<Integer,?student>(); } public?void?testput(){ Scanner?input=new?Scanner(System.in); int?i=0; while?(i<3){ System.out.print("請輸入學生ID:"); Integer?id=input.nextInt();? student?st=students.get(id); if?(st?==?null){ System.out.print("請輸入?學生姓名:"); String?name=input.next(); student?newstudent=new?student(id,name); students.put(id,?newstudent); System.out.println("添加學生成功"+students.get(id).name); i++; }else{? System.out.print("該學生id被占用?"); continue; } } }???? ????public?void?testkeyset(){? ???????Set<Integer>keSet=students.keySet(); ???????System.out.println("總共有:"+students.size()+"個學生"); ???????for?(Integer?stt:keSet){ ???? ??student?st=students.get(stt); ???? ??if(st?!=null){ ???? ??System.out.println("學生:"+st.name); ???? ??} ???????} ????}
這個是執行完的結果!
請輸入學生ID:1
請輸入 學生姓名:a
添加學生成功a
請輸入學生ID:2
請輸入 學生姓名:b
添加學生成功b
請輸入學生ID:3
請輸入 學生姓名:c
添加學生成功c
總共有:3個學生
學生:a
學生:b
學生:c
2015-09-28
RT,如果是正常SET添加,輸出的內容是無序的,但是如果作為MAP的KeySet方法獲取到的SET,是有序的,而且無法使用add 和addAll,親測,我的JDK版本 1.7.2SE
2015-09-28
我執行了也是一樣,是有序輸出的……五個entry,有序輸出……試了好多遍了……JDK為1.8.0_60!
2015-06-18
Map的順序是隨機的,你多執行兩遍試試