請原諒我的英語不好我正在嘗試創建一個以字符串作為鍵和對象作為參數的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;
}

holdtom
TA貢獻1805條經驗 獲得超10個贊
您正在打印對象,而不是對象。MapPersonPerson
您的代碼應該是:
Person person = MapPerson.get("Eminem");
System.out.println(person.getName() + " " + person.getGender());

呼喚遠方
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; }
以便它返回名稱和性別
添加回答
舉報
0/150
提交
取消