在Java中以单独的行打印多个ArrayList对象

时间:2015-02-18 15:29:10

标签: java arraylist

我有一个课程,其中包含有关课程的基本信息以及包含学生班级对象的ArrayList 有没有更聪明的方法来编辑toString()方法,以打印出关于课程和每个学生的信息(每个单独的一行),然后这样:

public String toString() {
    System.out.println("Course " + this.name + ", Teacher: " + this.teacher;
    for (Student stud: studentList) {
        System.out.println(stud);
    }
    retutn "";

我已经设置了学生班级' toString()方法打印学生信息。

*编辑:已实现我使用print(stud)犯了一个错误,因此将其更改为println(stud)

4 个答案:

答案 0 :(得分:5)

  • 如果您想每行打印一名学生,请使用System.out.println代替System.out.print
  • 您不应该在toString打印内容,您应该返回一个描述性字符串。

在这种情况下,您似乎想要一种方法来打印内容,因此请使用除toString之外的其他内容。也许printCourseInfo例如:

public void printCourseInfo() {
    System.out.println("Course " + name + ", Teacher: " + teacher);
    for (Student stud: studentList) {
        System.out.println(stud);        // Note println instead of print
    }
}

奖励部分:如果你正在使用Java 8,你可以做到

studentList.forEach(System.out::println);

答案 1 :(得分:1)

您应该使用System.out.println(stud)代替System.out.print(stud)

“println”的作用是在新行上打印每个学生

另请参阅this了解系统

上的所有内容

答案 2 :(得分:0)

当你有toString()方法时,你应该返回一个字符串,而不是打印出来。

由于您在这种情况下使用System.out.print,这意味着您可能想要打印出来。因此,在for-each循环中将其更改为System.out.println

public void printCourseInfo() { 
    System.out.println("Course " + name + ", Teacher: " + teacher);
    for (Student stud: studentList) {
        System.out.println(stud);    
    } 
} 

答案 3 :(得分:0)

其他人提到你不应该真正重新调整toString()。 相反,你应该实现像'getAsPrettyString()'等方法。 如果你很懒(像我一样),你可能想要使用这样的东西:

import java.util.List;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;

public class Blah {
    private String hello;
    private List<String>helloList;

    public String getAsPrettyString() {
        return ReflectionToStringBuilder.toString(this);
    }   
}

Using commons lang etc.