1

我正在尝试打印出带有整数键和员工值的树形图。每个 Employee 对象应该包含一个(字符串)姓氏、一个(字符串)名字、一个(整数)ID 和一个(字符串)绩效等级。我已经完成了员工课程。但是,我的输出带有作为位置的值。

Map(Integer, Employee) e = new TreeMap(Integer, Employee) ();

    Employee e1 = new Employee("Puppy", "Nguyen", new Integer(345), "4");
    e.put(e1.getID(), e1);
    Employee e2 = new Employee("Kitty", "Thompsons", new Integer(123), "2");
    e.put(e2.getID(), e2);
    Employee e3 = new Employee("Cubby", "Gonzalez", new Integer(234), "5");
    e.put(e3.getID(), e3);

    System.out.println("Original Employee-typed TreeMap: ");

    for(Map.Entry<Integer, Employee> entry : e.entrySet())
    {
        System.out.println("ID: " + entry.getKey());
        System.out.println("Employee: " + entry.getValue());
    }

我的输出:

原始员工类型的 TreeMap:

编号:123

员工:Employee@fef18a5d

编号:234

员工:Employee@ec71836a

编号:345

员工:Employee@89120ee

4

3 回答 3

2

您必须覆盖中的toString()方法Employee。现在你正在看

getClass().getName() + '@' + Integer.toHexString(hashCode()),这显然没有太多意义。

@Override
public String toString(){
 return this.name; // Or however the local field is declared
}
于 2013-10-18T02:34:00.860 回答
0

Java 正在打印 Employee 对象的类名和内存地址,因为它们没有 String toString() 方法。实现它以提供员工的描述,它将在您打印或调试等时使用。

例如:

@Override
public String toString() {
    return this.getFirstName() + ' ' + this.getLastName() +
        " (Perf. Scale: " + this.getPerformanceScale() +')';
}
于 2013-10-18T02:35:44.957 回答
0

你可以这样做

for(Map.Entry<Integer, Employee> entry : e.entrySet())
{
    System.out.println("ID: " + entry.getKey());
    Employee employee = entry.getValue();
    System.out.println("Employee: " + employee.getFirstName() +" "+employee..getLastName());
}

或者

您需要toString()在 Employee 类中添加方法,如下所示

class Employee{


    @Override
    public String toString() {
         return this.firstName + " " + this.lastName;
    }
}
于 2013-10-18T02:52:57.020 回答