各位好! 为什么我执行完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
RT,如果是正常SET添加,输出的内容是无序的,但是如果作为MAP的KeySet方法获取到的SET,是有序的,而且无法使用add 和addAll,亲测,我的JDK版本 1.7.2SE
我执行了也是一样,是有序输出的……五个entry,有序输出……试了好多遍了……JDK为1.8.0_60!
Map的顺序是随机的,你多执行两遍试试