java - 在程序开始时从 .txt 文件将文件读入 ArrayList

标签 java arraylist

所以我得到了 Konto 的 Java 类,它得到了:

private String navn;
private int medlemdsnummer;
private String årstal;
private String måned;
private String dag;
LocalDate localDate;

它们是这样使用的:

ArrayList<Konto> kontoArrayList = new ArrayList<>();

然后我在程序关闭前将我的 ArrayList 保存到一个 .txt 文档中:

private static void saveToFile(ArrayList<Konto> kontoArrayList) throws IOException {

    String content = new String(Files.readAllBytes(Paths.get("medlemmer.txt")));
    PrintStream printStream = new PrintStream("medlemmer.txt");

    for (int i = 0; i < kontoArrayList.size(); i++) {

        printStream.println(content + kontoArrayList.get(i).getMedlemdsnummer() + ": " + kontoArrayList.get(i).getNavn() + " " +
                kontoArrayList.get(i).getLocalDate());

    }


}

它们最终在 .txt 文件中看起来像这样:

1: Kasper 1996-11-20
2: Jonas 1996-04-27
3: Jesper 1996-05-14

好的,到目前为止一切顺利。现在的问题是:当程序打开时,我想让它能够从头加载 .txt 文件并将其“传输”到 Konto 的 ArrayList。这样我以后就可以使用我的方法(addNewMember)。我在网上看到了很多例子,但他们都使用:

ArrayList<String> somename = new ArrayList<String>();

我想使用:

ArrayList<Konto> konto = new ArrayList<Konto>();

这可能吗,如果可以怎么办? 如果不是我可以做什么呢?

提前致谢,维克多。

最佳答案

您可以将文件中的所有行作为字符串读取,并用空格分隔这些字符串。 然后通过选项解析创建新对象。 像这样:

List<String> strings = Files.readAllLines(Paths.get("test.txt"));
List<Konto> kontos = new ArrayList<>();
for (String string : strings) {
    String[] data = string.split(" ");
    kontos.add(new Konto(data[1], new Date(data[2])));
}

或者使用Stream:

List<Konto> kontos = Files.lines(Paths.get("test.txt"))  // String
    .map(line -> line.split(" "))                        // String[]
    .map(data -> new Konto(data[1], new Date(data[2]))   // Konto
    .collect(Collectors.toList());

关于java - 在程序开始时从 .txt 文件将文件读入 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47494958/

相关文章:

java - 无法使用 java 创建 ActiveMQ 队列或发送消息

Java - 如何找到在 Student 类中编写方法的得分最高的学生?

java - 使用按钮将 arraylist 元素添加到文本字段

android - arraylist.add 在 android 中的编译时错误

java - 为什么在 List<String> 中将 String 简单转换为 Integer 时会出现错误

java - Rome 图书馆读取 Java 提要

java - 放置评级栏?

java - 访问 jpa 实体关系时出现 NullPointerException

属性(property)税的 Java JTextfield 输入和输出

android - 第二次报错java.lang.ArrayIndexOutOfBoundsException.....Android