问答详情
源自:5-3 学生选课---删除 Map 中的学生

关于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


提问者:乐学Java 2015-06-18 11:04

个回答

  • 静思长远
    2015-09-28 17:56:24

    RT,如果是正常SET添加,输出的内容是无序的,但是如果作为MAP的KeySet方法获取到的SET,是有序的,而且无法使用add 和addAll,亲测,我的JDK版本 1.7.2SE

  • DLZer
    2015-09-28 07:30:28

    我执行了也是一样,是有序输出的……五个entry,有序输出……试了好多遍了……JDK为1.8.0_60!

  • 康振宁
    2015-06-18 18:37:16

    Map的顺序是随机的,你多执行两遍试试