问答详情
源自:5-2 学生选课---使用 Map 添加学生

​ 为什么我打印出来的顺序是一样的????

请输入学生ID: 1 请输入学生姓名: Tom 成功添加学生:Tom 请输入学生ID: 1 该学生id已存在! 请输入学生ID: 2 请输入学生姓名: Jack 成功添加学生:Jack 请输入学生ID: 3 请输入学生姓名: xiaoming 成功添加学生:xiaoming 总共有:3个学生 学生:Tom 学生:Jack 学生:xiaoming 




提问者:铅笔没有墨 2017-11-16 16:23

个回答

  • Racardo_Li
    2017-11-30 19:30:44

    你把while(i<3)里的数字3改大一点然后在执行程序输出看看就不一定了。

  • 铅笔没有墨
    2017-11-17 11:24:12

    public Map<String,Student> students;


    public MapTest() {

    // TODO Auto-generated constructor stub

    students = new HashMap<>();

    }


    /**

    * 添加,输入学生id,判断是否存在

    * 若不存在,则输入姓名,创建新学生对象,并添加进去

    * @param args

    */

    public void testPut(){

    //创建一个Scanner对象,用来获取输入的学生ID和姓名

    Scanner scanner = new Scanner(System.in);

    int i = 0;

    while(i<3){

    System.out.println("请输入学生ID:");

    String id = scanner.next();

    //判断该ID是否已存在

    Student st = students.get(id);

    if(st == null){

    //为空不存在该ID的学生信息,输入学生姓名,创建一个新的学生对象,添加到map

    System.out.println("请输入学生姓名:");

    String name = scanner.next();

    //创建学生实例

    Student newStudent = new Student();

    newStudent.setId(id);

    newStudent.setName(name);

    students.put(id, newStudent);

    System.out.println("成功添加学生:"+students.get(id).getName());

    i++;

    }else{

    System.out.println("该学生id已存在!");

    continue;

    }

    }

    }

    /**

    * 测试Map的keyset方法

    * @param args

    */

    public void testKeySet(){

    //通过keyset方法,返回map中所有键的值

    Set<String> keyset = students.keySet();

    System.out.println("总共有:"+students.size()+"个学生");


    //遍历keyset,取得每个key的值,再调用get方法取得key对应的value

    for (String string : keyset) {

    Student stu = students.get(string);

    if(stu!=null){

    System.out.println("学生:"+stu.getName());

    }

    }




    }


    public static void main(String[] args) {

    // TODO Auto-generated method stub

    MapTest test = new MapTest();

    test.testPut();

    test.testKeySet();

    }


  • 慕妹0185356
    2017-11-16 18:00:36

    代码贴出来