使用arraylists和列表编号

时间:2015-03-27 05:04:59

标签: java arraylist printing

所以我在同一个类中都有以下代码

List<Person> peopleList = new ArrayList<Person>();

private void viewPersons() {
    if (peopleList.isEmpty()) {
        System.out.println("No persons to display");
    }
    if (peopleList.isEmpty()!= true) {
        //for(int i = 0; i <= peopleList.size(); i++) {
        System.out.println(peopleList);
        //}
    }
}

还有另一个名为Person的类,该数组持有对它的引用。

我从用户输入获取值,这不重要或问题,但是当这个方法运行时(比如我有Jon,4110987654和jjon@gmail.com作为三个字符串的用户输入)我得到

  

“[Person @ 55f96302 Jon,4110987654,jjon @ gmail.com]作为输出。”

如果我输入了另一个人的信息,我会在一行中得到所有信息。它看起来像

  

“[Person @ 55f96302 Jon,4110987654,jjon @ gmail.com,Person @ 3d4eac69,   姓名,电话,电子邮件]“

但我想要的是

  

“Person @ 55f96302 Jon,4110987654,jjon @ gmail.com

     

Person @ 3d4eac69,姓名,电话,电子邮件“

如何将每个人的信息分开,"Person@55f96302"只是一个数字,例如1或2?

我只是不确定应该添加什么语法或应该更改什么。

这是Person类

中的toString()
public String toString(){
    StringBuilder builder = new StringBuilder();
    builder.append(super.toString()).append(" ");
    builder.append(fullName).append(", ");
    builder.append(phoneNumber).append(", ");
    builder.append(email).append(" ");
    return builder.toString();
}

4 个答案:

答案 0 :(得分:3)

您获得了上面提到的输出,因为您试图直接打印ArrayList,其中包含PersontoString()没有任何功能的对象。试试这段代码:

List<Person> peopleList = new ArrayList<Person>();

private void viewPersons() {
    if (peopleList.isEmpty()) {
        System.out.println("No persons to display");

    } else {
        for (Person p : peopleList) {
            // you can override Person.toString() however you want
            System.out.println(p.toString());
        }
    }
}

答案 1 :(得分:0)

您可以覆盖java.lang.Objects类toString()方法以格式化列表输出。

答案 2 :(得分:0)

您可以按照预期的方式进行打印。

  1. 你可以像Tim Biegeleisen在他的回答中提到的那样进行迭代。这个很简单。如果你打算只在这个地方打印,而不是代码中的任何其他地方。

  2. 如果您在多个地方需要这种类似的打印需求,那么您必须覆盖ArrayList的toString()方法。

答案 3 :(得分:0)

peopleList是arraylist。 以您提到的格式打印arraylist的内容 您必须使用每个循环和toString()方法。 toString()方法来自您需要覆盖的对象类。 您可以使用下面的修改代码

List<Person> peopleList = new ArrayList<Person>();

private void viewPersons() {
   if (peopleList.isEmpty()) {
        System.out.println("No persons to display");
   }
   else{
       //use of for each loop
       for(Person per : peopleList){ 
        //override toString() method
        System.out.println(per.toString());
       }
   }
}