關于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的順序是隨機的,你多執行兩遍試試