繁体   English   中英

打印作为对象的TreeMap值

[英]Printing a TreeMap value which is an Object

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

Map(Integer,Employee)e =新的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:

ID(标识号):123

员工:Employee @ fef18a5d

ID(标识号):234

员工:Employee @ ec71836a

ID:345

员工:Employee @ 89120ee

您必须重写EmployeetoString()方法。 现在你在看

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

@Override
public String toString(){
 return this.name; // Or however the local field is declared
}

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

例如:

@Override
public String toString() {
    return this.getFirstName() + ' ' + this.getLastName() +
        " (Perf. Scale: " + this.getPerformanceScale() +')';
}

你可以这样

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());
}

要么

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

class Employee{


    @Override
    public String toString() {
         return this.firstName + " " + this.lastName;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM