从LinkedQueue获取类对象数据

时间:2017-10-25 20:11:44

标签: java queue

首先,我想说这是我在这里发表的第一篇文章,所以如果我做错了,请告诉我。

我有一个名为EmployeeRecord的课程:

void setEmployeeRecord(int empNo, String firstName, String lastName, int age) {
        this.setEmpNo(empNo);
        this.setFirstName(firstName);
        this.setLastName(lastName);
        this.setAge(age);
    }

我还有基本set/get Node next / Object element的Node类,带isEmpty(), insert, remove, getTail, size and search的LinkedQueue类。

在我的GUI中,我有4个带有employeeID,firstName,lastName和age的文本字段。

当我按下插入时,我想将这些值添加到

EmployeeRecord er = new EmployeeRecord(); - > er.setEmployeeRecord(num, fN, lN, agei);

然后我想将它们添加到我的LinkedQueue - lq.append(er);

我遇到的问题是当我想将存储在我的LinkedQueue中的信息显示到TextArea中时。 我无法找到一种方法来实现'来自它的数据,目前我有类似的东西:

 textArea.setText(lq.Search()); 

 -> 

 //This is the LinkedQueue class
 public String Search() {
    String msg = "";
    Node currentNode = this.head;
    while (currentNode != null) {
        msg += (currentNode.getElement().toString() + "\n");
        currentNode = currentNode.getNext();
    }

    return msg;
}

我得到的输出是:appletviewer.EmployeeRecord@2e1a6955

如何获得使用ArrayList轻松获得的实际输出?

(我不能使用ArrayList!)

2 个答案:

答案 0 :(得分:1)

您必须覆盖toString()中的 EmployeeRecord 方法。

您在队列中保存了EmployeeRecord对象。打印元素时,将调用对象的toString()函数。如果您不覆盖它,则使用默认值并打印对象的标识符。

尝试这样的事情:

@Override
public String toString() {
  return "EmpNo: " +  empNo  + "\nFirstName: "+ firstName + "\nLastName: " + lastName + "\nAge: "+age;
}

答案 1 :(得分:0)

“currentNode.getElement()。toString()”正在将当前节点的信息转换为字符串,而不是当前节点中的实际信息,在这种情况下两者都是它们不相同,因为当前节点是一种Node对象。 要显示员工的信息,您必须进一步询问当前节点的详细信息,在这种情况下,两个信息都将匹配,因为currentNode.particular是一个Element对象。

因此,您的代码中的修改应该是

msg += (currentNode.name+" "+currentNode.empnum+ "\n");

其中nameempnum应替换为员工类的属性。