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

打印顺序一致

为什么我的程序打印顺序和添加的顺序一致?

提问者:SungJoe 2016-01-03 13:09

个回答

  • Uestc_L
    2016-02-25 11:08:10

    我的实验结果是输出顺序跟输入顺序相反

  • iPotato94
    2016-01-14 22:48:39

    (以下代码打印顺序和ID顺序一致。如果我输入1. Tom 2.Jack 3. xiaoming, 输出结果也是 Tom, Jack, xiaoming )

    package com.imooc.collection_map;


    import java.util.HashMap;

    import java.util.Map;

    import java.util.Scanner;

    import java.util.Set;


    public class MapTest {


    /**

    * 用来承装学生类型的对象

    */

    public Map<String, Student> students;

    /**

    * 在构造器中初始化students属性

    */

    public MapTest(){

    this.students = new HashMap<String, Student>();

    }

    /**

    * 测试添加: 输入学生ID, 判断是否被占用

    * 若未被占用, 则输入姓名, 创建新学生对象

    * 并且添加到students中

    */

    public void testPut(){

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

    Scanner scan = new Scanner(System.in);

    int i = 0;

    while(i<3){

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

    String ID = scan.next();

    //判断该ID是否被占用

    Student st = students.get(ID);

    if (st == null){

    //提示输入学生姓名

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

    String name = scan.next();

    //创建新的学生对象

    Student newStudent = new Student(ID, name);

    //通过调用students的put方法, 添加 ID-学生 映射

    students.put(ID, newStudent);

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

    i++;

    } else {

    System.out.println("该学生ID已被占用!");

    continue;

    }

    }

    scan.close();

    }

    /**

    * 测试Map的keySet方法

    */

    public void testKeySet(){

    //通过keySet方法, 返回Map中所有"键"的Set集合

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

    //取得students的容量

    System.out.println();

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

    //遍历keySet, 取得每一个键, 再调用get方法取得每个键对应的value

    for (String stuId: ks){

    Student st = students.get(stuId);

    if (st != null)

    System.out.println("学生: " + st.name);

    }

    }

    /**

    * @param args

    */

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    MapTest mt = new MapTest();

    mt.testPut();

    mt.testKeySet();

    }


    }


  • 堂堂堂堂糖糖糖童鞋
    2016-01-03 15:25:21

    木有代码,这让人胡思乱想!