-1

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

我究竟做错了什么?

4

2 回答 2

2

看看你的代码

String test=employees.get(5).toString();

这将使用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);
于 2013-04-13T20:28:55.933 回答
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;
于 2013-04-13T20:29:02.697 回答