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