在 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
希望对你有帮助。
假设我有一个包含以下内容的文本文件 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 希望对你有帮助。