gpt4 book ai didi

java - 使用包含对象的 HashMap 时出现问题

转载 作者:行者123 更新时间:2023-11-30 01:53:12 27 4
gpt4 key购买 nike

请原谅我糟糕的英语

我正在尝试创建一个以字符串作为键、以对象作为参数的 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 Male”。相反,我得到的是这样的:

{Eminem=javaex1.Person@2a139a55}

最佳答案

发生这种情况是因为您正在尝试打印一个对象,打印时的对象给出了 Object 类的默认 toString 实现,如下所示

//Object类中toString的实现

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

这是您在当前输出中可以看到的内容。

您应该像这样在 Person 类中重写 toString 方法。

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

以便它返回姓名和性别

关于java - 使用包含对象的 HashMap 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55355608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com