请问为什么我的MAP遍历输出是有序的??求解答

来源:5-2 学生选课---使用 Map 添加学生

VisenYang

2016-04-07 15:02

public class MapTest {
	public Map<String,Students> stu;
	Scanner input =  new Scanner(System.in);
	/*
	 * MapTest构造函数;
	 */
	public MapTest(){
		this.stu = new HashMap<String,Students>();
	}
	/*
	 * 添加方法(给MAP添加学生对象)
	 * 输入ID,如果ID不存在,则继续添加name
	 * 如果ID存在,提示此ID已存在
	 */
	public void Put(){
		int i = 1;
		System.out.println("添加方法运行了,请添加3个学生!");
		while(i != 0 ){
			System.out.println("请输入学生ID:");
			String id = input.next();	
			if(stu.get(id)==null){//get方法是得到对应ID的value;
				System.out.println("请输入学生name: ");
				String name = input.next();
				Students st = new Students(id,name);//将id和name属性给学生对象;
				stu.put(id, st);//添加ID和学生对象;
			}else{
				System.out.println("该ID已被占用,请重新输入:");
			}
			System.out.println("继续添加请输入1,停止添加请输入0");
			i = input.nextInt();
		}
		
	}
	
	/*
	 * 2种方法遍历MAP
	 */
	public void forEach(){
		System.out.println("学生库中有"+stu.size()+"个学生:");
//		for(String sr:stu.keySet()){//keySet返回的是key集,遍历id从而得到student;
//			System.out.println(sr+":"+stu.get(sr).name);
//		}
		for(Students ss:stu.values()){//values返回的是value集,遍历value直接得到student;
			System.out.println(ss.id+":"+ss.name);
		}
		
	}
	/*
	 * args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MapTest mt = new MapTest();
		mt.Put();
		mt.forEach();
	}

}

http://img.mukewang.com/570606040001f35803320660.jpg

写回答 关注

1回答

  • lark1573
    2016-04-07 15:17:46
    已采纳

    刚运行了你的代码,代码是没有问题的。结果是无序输出的。你多试两次就可以看出了。可能你这次输出的正好是按照你的那个输入顺序来的,纯属巧合。可以去买彩票啦~

    VisenY...

    好了好了,,,,我弄了很多很多输出,终于表现出无序了,,,谢谢了

    2016-04-07 19:16:17

    共 2 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409784 学习 · 4339 问题

查看课程

相似问题