问答详情
源自:5-3 学生选课---删除 Map 中的学生

为什么我输出的键值是哈希值。。。

请输入要删除的学生ID!

1

成功删除学生:2

取得键:3

对应的值为:com.imooc.collection.Student@2b21cc40

取得键:2

对应的值为:com.imooc.collection.Student@37e893df


提问者:慕移动7208282 2017-10-20 16:58

个回答

  • 慕莱坞5659625
    2018-10-23 17:13:18

    System.out.println("对应的值为:" + entry.getValue());

    get到的Value值是一个Student对象,输出了地址吧  要想输出名字还的.name

  • yyz要学java
    2018-05-02 22:52:27

    public void testRemove() {

            //获取从键盘输入的待删除的学生信息 

    Scanner console = new Scanner(System.in);


    while (true) {

    // 提示用户输入待删除的学生的ID字符串

    System.out.println("请输入要删除的学生的ID!");

    String ID = console.next();

    // 判断该ID是否有对应的学生对象

    Student st = students.get(ID);

    if (st == null) {

    // 提示输入的ID并不存在

    System.out.println("该ID并不存在");

    }else{

    students.remove(ID);

    System.out.println("成功删除学生:" + st.name);

    break;

    }

    }

    }

    试试  我自己试过了 就是这段的问题  改的地方你自己对照一下

  • 慕移动7208282
    2017-10-23 10:08:42

    package com.imooc.collection;


    import java.util.HashMap;

    import java.util.Map;

    import java.util.Map.Entry;

    import java.util.Scanner;

    import java.util.Set;


    public class MapTest {

    /*

    * 创建一个名为students属性用来装学生类型的对象

    * */

    public Map<String, Student> students;      //需要注意 Map得import

    /*

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

    * */

    public MapTest(){

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

    }

    /*

    * 测试添加的方法 :在键盘中输入学生id,判断是否被占用

    * 若未被占用,则输入学生姓名,创建一个新的学生对象,并且添加到students属性中去

    * */

    public void testPut(){

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

    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){                       //在st为空的情况下会提示学生输入姓名和

    //提示输入学生的姓名

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

    String name = console.next();

    //创建新的学生对象

    Student newStudent = new Student(ID,name);

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

    students.put(ID, newStudent);

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

    i++;

    }else{                                //在st部位空的情况下会提示

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

    continue;

    }

    }

    }

    /*

    * 测试Map的keySet方法

    * */

    public void testKeySet(){

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

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

    //取得students的容量

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

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

    for(String stuId : keySet){

    Student st = students.get(stuId);                    //这样便取得了某一个键的value值

    if(st!=null){

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

    }

    }

    }

    /*

    * 测试删除Map的映射

    * */

    public void testRemove(){

    //获取从键盘输入待删除的学生ID字符串

    Scanner console = new Scanner(System.in);

    while(true){

    //提示输入待删除学生的id

    System.out.println("请输入要删除的学生ID!");

    String ID  = console.next();

    //判断这个ID是否有对应的学生对象

    Student st = students.get(ID);

    if(st == null){

    //提示输入的ID并不存在

    System.out.println("该ID不存在");

    continue;

    }

    students.remove(ID);

    System.out.println("成功删除学生:" + st.name);

    break;

    }

    }

    /*

    * 通过entrySet方法来遍历Map

    * */

    public void testEntrySet(){

    //通过entrySet方法 ,返回Map中所有键值对的集合

    Set<Entry<String,Student>> entrySet = students.entrySet();

    for(Entry<String,Student>entry:entrySet){

    System.out.println("取得键:" + entry.getKey());        //取得entry键的key值

    System.out.println("对应的值为:" + entry.getValue());

    }

    }

    public static void main(String[] args) {

    MapTest  mt= new MapTest();

    mt.testPut();

    mt.testKeySet();

    mt.testRemove();

    mt.testEntrySet();

    }


    }


  • 诺尔雷顿
    2017-10-21 15:02:47

    贴代码啊,没代码用命去说啊?