为了账号安全,请及时绑定邮箱和手机立即绑定

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

请输入要删除的学生ID!

1

成功删除学生:2

取得键:3

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

取得键:2

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


正在回答

4 回答

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

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

0 回复 有任何疑惑可以回复我~

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;

}

}

}

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

0 回复 有任何疑惑可以回复我~

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();

}


}


0 回复 有任何疑惑可以回复我~
#1

Insanity4mm

System.out.println("对应的值为:" + entry.getValue().name);
2017-12-14 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

慕移动7208282 提问者

大哥代码贴在下面了
2017-10-23 回复 有任何疑惑可以回复我~
#2

慕移动7208282 提问者

就是上节课的添加都正常到了这节的删除操作返回的就是哈希值了
2017-10-23 回复 有任何疑惑可以回复我~
#3

慕移动7208282 提问者

找到问题了 是没有.name属性 直接打印了一个对象 所以是哈希值
2017-10-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号