请输入要删除的学生ID!
1
成功删除学生:2
取得键:3
对应的值为:com.imooc.collection.Student@2b21cc40
取得键:2
对应的值为:com.imooc.collection.Student@37e893df
System.out.println("对应的值为:" + entry.getValue());
get到的Value值是一个Student对象,输出了地址吧 要想输出名字还的.name
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;
}
}
}
试试 我自己试过了 就是这段的问题 改的地方你自己对照一下
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();
}
}
贴代码啊,没代码用命去说啊?