public class MapTest { public Map<String ,Student> student; public MapTest(){ this.student = new HashMap<String ,Student>(); } public void testPut(){ Scanner console = new Scanner(System.in); int i = 0; while(i<3){ System.out.println("请输入学生ID"); String ID = console.next(); Student st = student.get(ID); if(st == null){ System.out.println("请输入学生姓名"); String name = console.next(); Student newStudent = new Student(ID,name); student.put(ID,newStudent); System.out.println("成功添加学生:"+student.get(ID).name); i++; }else { System.out.println("该学生的ID已被占用"); continue; } } } public void testKeySet(){ //返回所有key的集合 Set<String> keySet=student.keySet(); for (String stuId:keySet) { Student st = student.get(stuId); if(st!=null){ System.out.println("学生"+st.name); } } } public void testRemove(){ System.out.println("请输入要删除的学生ID"); Scanner console = new Scanner(System.in); while (true) { String ID = console.next(); Student st = student.get(ID); if (st == null) { System.out.println("该ID不存在"); continue; } student.remove(ID); System.out.println("成功删除学生:"+st.name); break; } } public void testEntrySet(){ //返回所有键值对的集合 Set<Map.Entry<String,Student>> entrySet = student.entrySet(); for (Map.Entry<String,Student> entry:entrySet) { System.out.println("取得键为:"+entry.getKey()); System.out.println("对应的值为:"+entry.getValue().name); } } public static void main(String[] args) { MapTest mt =new MapTest(); mt.testPut(); mt.testKeySet(); mt.testRemove(); mt.testEntrySet(); } }
我也一样,怀疑是JDK版本的问题
我引用下别人的话:在Java中无序指的是Java语言没有规定某个容器按什么顺序遍历,在不同的Java虚拟机上对某个容器的实现是不一样,比如说运行在Windows和Linux上的Java虚拟机对HashSet的遍历顺序可能不太一样,但对同一种虚拟机来说遍历输出都是一样的。而不是我们日常所理解的"无序就是乱序"的意思。
我也是这样的问题
那为什么我每次输出都是按照我输入的顺序来的呢
无序是指不按照插入顺序排序,具体是根据一种哈希算法来规定储存位置的,所以你每次按同样的顺序插入,取出来的顺序都是一定的
你输入可以无序呀,你可以自己尝试一下呀,比如他214,你124呀