為什么我輸出的鍵值是哈希值。。。
請(qǐng)輸入要?jiǎng)h除的學(xué)生ID!
1
成功刪除學(xué)生:2
取得鍵:3
對(duì)應(yīng)的值為:com.imooc.collection.Student@2b21cc40
取得鍵:2
對(duì)應(yīng)的值為:com.imooc.collection.Student@37e893df
請(qǐng)輸入要?jiǎng)h除的學(xué)生ID!
1
成功刪除學(xué)生:2
取得鍵:3
對(duì)應(yīng)的值為:com.imooc.collection.Student@2b21cc40
取得鍵:2
對(duì)應(yīng)的值為:com.imooc.collection.Student@37e893df
2017-10-20
舉報(bào)
2018-10-23
System.out.println("對(duì)應(yīng)的值為:" + entry.getValue());
get到的Value值是一個(gè)Student對(duì)象,輸出了地址吧? 要想輸出名字還的.name
2018-05-02
public void testRemove() {
? ? ? ? //獲取從鍵盤輸入的待刪除的學(xué)生信息?
Scanner console = new Scanner(System.in);
while (true) {
// 提示用戶輸入待刪除的學(xué)生的ID字符串
System.out.println("請(qǐng)輸入要?jiǎng)h除的學(xué)生的ID!");
String ID = console.next();
// 判斷該ID是否有對(duì)應(yīng)的學(xué)生對(duì)象
Student st = students.get(ID);
if (st == null) {
// 提示輸入的ID并不存在
System.out.println("該ID并不存在");
}else{
students.remove(ID);
System.out.println("成功刪除學(xué)生:" + st.name);
break;
}
}
}
試試 ?我自己試過了 就是這段的問題 ?改的地方你自己對(duì)照一下
2017-10-23
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 {
/*
* 創(chuàng)建一個(gè)名為students屬性用來裝學(xué)生類型的對(duì)象
*?
* */
public Map<String, Student> students; ? ? ?//需要注意 Map得import
/*
* 在構(gòu)造器中初始化students屬性
*?
* */
public MapTest(){
this.students = new HashMap<String,Student>();
}
/*
* 測(cè)試添加的方法 :在鍵盤中輸入學(xué)生id,判斷是否被占用
* 若未被占用,則輸入學(xué)生姓名,創(chuàng)建一個(gè)新的學(xué)生對(duì)象,并且添加到students屬性中去
*?
* */
public void testPut(){
//創(chuàng)建一個(gè)Scanner對(duì)象 用來獲取輸入的學(xué)生id和姓名
Scanner console = new Scanner(System.in);?
int i = 0;
while(i<3){
System.out.println("請(qǐng)輸入學(xué)生id");
String ID = console.next();
//判斷該ID是否被占用了
Student st = students.get(ID);
if(st == null){ ? ? ? ? ? ? ? ? ? ? ? //在st為空的情況下會(huì)提示學(xué)生輸入姓名和
//提示輸入學(xué)生的姓名
System.out.println("請(qǐng)輸入學(xué)生姓名:");
String name = console.next();
//創(chuàng)建新的學(xué)生對(duì)象
Student newStudent = new Student(ID,name);
//通過調(diào)用students 的put方法,添加ID-學(xué)生的映射關(guān)系
students.put(ID, newStudent);
System.out.println("成功添加學(xué)生:" + students.get(ID).name);
i++;
}else{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//在st部位空的情況下會(huì)提示
System.out.println("該學(xué)生id已被占用!");
continue;
}
}
}
/*
* 測(cè)試Map的keySet方法
* */
public void testKeySet(){
//通過keySet方法,返回Map中所有“鍵”的Set集合
Set<String>keySet = students.keySet();
//取得students的容量
System.out.println("總共有:" + students.size() + "個(gè)學(xué)生");
//遍歷整個(gè)keySet對(duì)象取得Map中的每一個(gè)鍵,再調(diào)用get方法 取得每個(gè)鍵對(duì)應(yīng)的value
for(String stuId : keySet){
Student st = students.get(stuId); ? ? ? ? ? ? ? ? ? ?//這樣便取得了某一個(gè)鍵的value值
if(st!=null){
System.out.println("學(xué)生:" + st.name);
}
}
}
/*
* 測(cè)試刪除Map的映射
*?
* */
public void testRemove(){
//獲取從鍵盤輸入待刪除的學(xué)生ID字符串
Scanner console = new Scanner(System.in);
while(true){
//提示輸入待刪除學(xué)生的id
System.out.println("請(qǐng)輸入要?jiǎng)h除的學(xué)生ID!");
String ID ?= console.next();
//判斷這個(gè)ID是否有對(duì)應(yīng)的學(xué)生對(duì)象
Student st = students.get(ID);
if(st == null){
//提示輸入的ID并不存在
System.out.println("該ID不存在");
continue;
}
students.remove(ID);
System.out.println("成功刪除學(xué)生:" + st.name);
break;
}
}
/*
* 通過entrySet方法來遍歷Map
* */
public void testEntrySet(){
//通過entrySet方法 ,返回Map中所有鍵值對(duì)的集合
Set<Entry<String,Student>> entrySet = students.entrySet();
for(Entry<String,Student>entry:entrySet){
System.out.println("取得鍵:" + entry.getKey()); ? ? ? ?//取得entry鍵的key值
System.out.println("對(duì)應(yīng)的值為:" + entry.getValue());
}
}
public static void main(String[] args) {
MapTest ?mt= new MapTest();
mt.testPut();
mt.testKeySet();
mt.testRemove();
mt.testEntrySet();
}
}
2017-10-21
貼代碼啊,沒代碼用命去說啊?