从java中的链表保存数据?

时间:2013-12-01 01:33:45

标签: java linked-list

所以我正在创建一个包含链表的程序,我需要它在程序退出时存储列表中的信息,并在启动时加载

无论如何都要这样做?也许不是文件

提前感谢!

5 个答案:

答案 0 :(得分:2)

我建议将内容写入文本文件,但正如Elliott Frisch提到的还有其他几种方法。对我来说最简单的似乎是使用序列化来写入文本文件。

注意:这要求将列表定义为LinkedList类型而不是List,因为LinkedList是可序列化的,而List不是。

我的意思是:

好的:LinkedList<String> list = new LinkedList<String>();

不行:List<String> list = new LinkedList<String>();

写入文件:

FileOutputStream fout = new FileOutputStream(“tmp.txt”);
ObjectOutputStream out = new ObjectOutputStream(fout);
out.writeObject(myList);

从文件中读取:

FileInputStream fin = new FileInputStream(“tmp.txt”);
ObjectInputStream in = new ObjectInputStream(fin);
LinkedList<WhateverData> myList = (LinkedList<WhateverData>) in.readObject();

我认为WhateverData也应该是可序列化的。

答案 1 :(得分:1)

有很多方法可以做到这一点,但对于初学者来说,保存到文本文件中可能是最好的方法。循环遍历链接列表,并使用PrintWriter(或Java中的任何其他类)将所有内容存储在指定的.txt文件中:

PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");
CustomList list = new CustomList();//not sure what your list is called

//iterate over list {
    writer.println(list.get(currentPosition));
}

writer.close();//saves file

来源:How do I create a file and write to it in Java?

使用BufferedReader

阅读文件时,您可以执行相同的操作
BufferedReader reader = new BufferedReader(new FileReader("/path/to/file.txt"));
CustomList list = new CustomList();//not sure what your list is called
String line = null;
while ((line = reader.readLine()) != null) {
    list.add(new CustomeNode(line));
}

来源:Java: How to read a text file

注意:这是伪代码。

答案 2 :(得分:1)

一般来说,实现目标有三个主要步骤 -

  1. 检查持久性存储是否具有链接列表(如果是,则检索它,否则创建链接列表)
  2. 在链接列表上执行处理(添加,删除,编辑等)
  3. 将链接列表存储到持久存储

您的持久存储可能几乎是任何形式的存储。它可能是一个远程数据库服务器(或文件系统),它可能是一个内存系统,它可能由一个众所周知的&#34;本地filePath。这里有persistence strategies的更多阅读。

答案 3 :(得分:0)

你必须使用一个文件,没有别的办法。为您的数据制作格式,写入文件,再次读取。这就是文件,它们是与程序分开的永久数据存储机制。

答案 4 :(得分:0)

不要将此视为答案,而应将其视为评论。

您是否尝试过在序列化的背景下思考。 例如:如果您是用于链表的数字列表,则可以序列化整数数组。

稍后程序启动时,您可以反序列化并使用重组数字来填充链接列表。

希望这有帮助。