在 Java 中将文本文件内容写入自定义数组列表

Write text file content into custom arraylist in Java

假设我有一个包含以下内容的文本文件 DataBase.txt

1    leo               messi              12.12.1986
2    cristiano         ronaldo            22.01.1985
3    arjen             robben             14.11.1991

还有一个自定义数组列表,如下所示:

public static ArrayList<Rows> InfoList = new ArrayList<Rows>();

这是我的 Rows class 使用 setter、getter 和 toString 方法的实现:

public class Rows {

    public int id;
    public String firstName;
    public String secondName;
    public String dateOfbrth;

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

    public int getId() {
        return id;
    }
    public String getFirstName() {
        return firstName;
    }
    public String getSecondName() {
        return secondName;
    }
    public String getDateOfbrth() {
        return dateOfbrth;
    }
    public void setId(int id) {
        this.id = id;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public void setSecondName(String secondName) {
        this.secondName = secondName;
    }
    public void setDateOfbrth(String dateOfbrth) {
        this.dateOfbrth = dateOfbrth;
    }
}

所以。问题是:如何将文本文件内容写入 arrayList,其中每个元素都将在 class 行中引用其自己的字段。尽管每行的空格数不同?哪些算法或 Java classes 将有助于解决这个问题?

我是 Java 的新手,所以我尝试使用 BuffredReader 来做到这一点,但我坚持将 line 并将每个元素添加到 arrayList:

try (BufferedReader br = new BufferedReader(new FileReader("F:/DataBase.txt"))) {
    for (String line; (line = br.readLine()) != null; ) {

    }
}

感谢您的帮助

是这样的:

try (BufferedReader br = new BufferedReader(new FileReader("F:/DataBase.txt"))) {
    String line;
    while((line = br.readLine())!=null ) {
        String[] values = line.split("\s+");
        ...
    }
}
    while ((line = br.readLine()) != null) {
            String[] row = line.split("\s+");
            Row row = new Row();
            row.setId(row[0]);
            row.setFirstName(row[1]);
            row.setSecondName(row[2]);
            row.setDateOfbrth(row[3]);
            InfoList.add(row);
        }

\s+ 是一个正则表达式,它将导致任意数量的连续空格将您的字符串拆分为标记,请参阅此答案 How to split a String by space 希望对你有帮助。