为什么我这个顺序一直是有序的

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

慕姐4925769

2018-11-21 14:55

package Test;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class MapTest {

    // 创建一个承接学生类型对象的Map属性
    public Map<String,Student> students;

    // 构造器中初始化student属性
    public MapTest() {
        this.students = new HashMap<String, Student>();
    }

    /*
     * 测试添加:输入学生ID,判断是否被占用
     * 若未被占用,则输入姓名,创建新学生对象,并且
     * 添加到students中
     */
    public void testPut() {
        Scanner console = new Scanner(System.in);
        int i = 0;
        while (i < 3) {
            System.out.println("请输入学生ID:");
            String ID = console.next();
            //判断该ID是否被占用
            Student st = students.get(ID);
            if (st == null){
                // 提示输入学生姓名
                System.out.println("请输入学生姓名:");
                String name = console.next();
                //创建新的学生对象newStudent,把ID和name传递进去
                Student newStudent = new  Student(ID,name);
                //通过调用students的put方法,添加ID-学生映射
                students.put(ID,newStudent);
                //通过students的get方法取得和ID对应的姓名对象
                System.out.println("成功添加学生:"+students.get(ID).getName());
                i++;
            }else {
                System.out.println("该学生ID已被占用!");
                continue;
            }

        }

    }

    //测试Map的keSet方法
    public void testKeySet() {
        //因为通过泛型规定了键的类型是String,所以要通过泛型为String的Set对象接收keySet方法的返回值
        //通过keySet方法,返回Map中的所有“键”的Set集合
        Set<String> keySet = students.keySet();
        // 取得students的容量
        System.out.println("总共有:"+students.size()+"名学生");
        // 遍历keySet对象,取得每一个键,在调用gei方法取得每个键对应的value
        for (String stuId : keySet) {
             Student st = students.get(stuId);  //取值
            if (st != null) {
                System.out.println("学生:"+st.getName());
            }

        }
    }


    public static void main(String[] args) {
        MapTest mt = new MapTest();
        mt.testPut();
        mt.testKeySet();
    }

}


写回答 关注

2回答

  • 慕无忌8817699
    2019-10-30 11:17:24

    我和你一样。用的myeclipse。都是顺序的

  • 慕UI6472371
    2019-07-01 18:18:19

    巧合,多运行几次


Java入门第三季

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

409770 学习 · 4388 问题

查看课程

相似问题