我创建了一个HashMap
,其中键为Integers
,值为Employee
类。 Employee
包含员工的名字,姓氏和地址。我在打印出值时遇到问题。这是我试过的。
employees.put(5, e1);
String test=employees.get(5).toString();
System.out.println(employees.toString());
System.out.println(test);
输出:
{5=identitymanagement.Employee@6da264f1}
identitymanagement.Employee@6da264f1
我做错了什么?
答案 0 :(得分:2)
查看您的代码
String test=employees.get(5).toString();
这将使用hashmap中的键5
获取项目,然后调用该对象的toString
方法。此对象的行为方式意味着您没有覆盖该方法,这就是它在内存中打印出对象地址的原因。
System.out.println(employees.toString());
这将尝试打印出HashMap
对象。与Employee
类相同,HashMap不会覆盖它的toString
方法,因此它只是打印出内存中的对象引用。
解决方案
在输出类的详细信息时,约定是覆盖toString()
方法。这看起来像这样:
public String toString()
{
return "name: " + name;
}
当你将这个方法放在你的类中时,你可以调用toString
方法,它不会打印出对象的内存地址,这就是它现在正在做的事情:)
使用此代码时,您所要做的就是将对象传递给System.out.println
方法,它将完成剩下的工作:
Employee e = employees.get(5);
System.out.println(e);
答案 1 :(得分:0)
正确的方法是
Employee e = employees.get(5); // return's Employee object stored in map with key 5
String firstName = e.firstName;
String lastName = e.lastName;
String address = e.address;