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