亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用包含對象的哈希映射時出現問題

使用包含對象的哈希映射時出現問題

忽然笑 2022-09-01 17:34:42
請原諒我的英語不好我正在嘗試創建一個以字符串作為鍵和對象作為參數的HashMap,我想在每次程序運行時對其進行初始化,以便將其添加到HashMap中的新鍵中。問題是,并非所有值都返回,即第二個值,會返回一個奇怪的輸出。package javaex1;import java.util.*;public class Javaex1 {public static void main(String[] args) {    Person obj = new Person("Eminem", "Male");    HashMap<String, Person> MapPerson = new HashMap<String, Person>();    MapPerson.put("Eminem", obj);    System.out.println(MapPerson);  }    }對象package javaex1;public class Person {String Name;String Gender;public Person (String name, String Gend) {    this.Name = name;    this.Gender = Gend;}    public String getName() {    return Name;}public String getGender() {    return Gender;}}任何幫助或提示都非常感謝!提前感謝您抽出寶貴時間!預期結果應為“埃米納姆·馬累”。相反,我得到的是這個:{Eminem=javaex1.Person@2a139a55}
查看完整描述

3 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

您應該在類中重寫方法。諸如此類:toStringPerson


@Override

public String toString() {

    return this.Name + " " + this.Gender;

}


查看完整回答
反對 回復 2022-09-01
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

您正在打印對象,而不是對象。MapPersonPerson


您的代碼應該是:


Person person = MapPerson.get("Eminem");

System.out.println(person.getName() + " " + person.getGender());


查看完整回答
反對 回復 2022-09-01
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

發生這種情況是因為您正在嘗試打印對象,打印時的對象默認為對象類的String實現,如下所示

對象類中 toString 的實現

 public String toString() {
     return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

這是您在當前輸出中看到的內容。

你應該像這樣在Person類中ovverride toString方法。

    public String toString() {
        return this.Name + " " + this.Gender; 
}

以便它返回名稱和性別


查看完整回答
反對 回復 2022-09-01
  • 3 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號