hashmap使用“employee class”作为值

时间:2013-04-13 20:24:27

标签: java

我创建了一个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

我做错了什么?

2 个答案:

答案 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;