Java 是否将更改(永久)保存在arraylist中?

Java 是否将更改(永久)保存在arraylist中?,java,arraylist,save,Java,Arraylist,Save,可能吗?例如,用户在arraylist(bufferedreader进程)中添加了一个新的项/元素,肯定会发生更改。我的问题是,是否有可能,即使用户多次更改arraylist,它也会永久存在,即使他们关闭程序并再次打开它,它也会一直存在 注意:不使用.txt 很抱歉问这样的问题,但我真的很好奇。 谢谢大家! 如果您的ArrayList经常处于 保存在文件系统或数据库中。 这就是你需要做的 当程序停止时,将释放它使用的所有内存,包括您的ArrayList。除了不关闭程序外,没有别的办法。如果您真的

可能吗?例如,用户在arraylist(bufferedreader进程)中添加了一个新的项/元素,肯定会发生更改。我的问题是,是否有可能,即使用户多次更改arraylist,它也会永久存在,即使他们关闭程序并再次打开它,它也会一直存在

注意:不使用.txt

很抱歉问这样的问题,但我真的很好奇。
谢谢大家!

如果您的ArrayList经常处于 保存在文件系统或数据库中。

这就是你需要做的

当程序停止时,将释放它使用的所有内存,包括您的ArrayList。除了不关闭程序外,没有别的办法。如果您真的需要持久数据结构,那么您必须以某种方式将其写入硬盘

您要求不要使用.txt。好吧,没关系,但是你必须在某处创建一个文件来存储这些数据

幸运的是,ArrayList是可序列化的。只要其中的元素可序列化,就可以轻松地将其存储在具有
writeObject
的文件中,如下所示:

try {
    FileOutputStream fos = new FileOutputStream(filename);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(arraylist);
    oos.close();
} catch(Exception e) {
    e.printStackTrace();
}
然后可以使用
readObject
再次重新创建ArrayList

ArrayList<Data> list;
try {
    FileInputStream fis = new FileInputStream(filename);
    ObjectInputStream ois = new ObjectInputStream(fis);
    list = (ArrayList<Data>) ois.readObject();
    ois.close();
} catch(Exception e) {
    e.printStackTrace();
}
ArrayList列表;
试一试{
FileInputStream fis=新的FileInputStream(文件名);
ObjectInputStream ois=新ObjectInputStream(fis);
list=(ArrayList)ois.readObject();
ois.close();
}捕获(例外e){
e、 printStackTrace();
}

请注意,存储在此ArrayList中的对象也需要可序列化。这意味着您必须为它们创建一个
writeObject
和一个
readObject
方法,如果您创建了这些类。

您使用的arraylist对象只是程序的一个变量。虽然程序保留对该变量的引用,但一旦关闭程序,该变量将消失。如果您想将信息保存在需要使用文件或数据库的变量中,则不能存储java变量。

如果我知道您不允许使用文本文件以CSV格式存储数据,那么您或您的老师可能需要序列化/反序列化;-),想要或者想要你做什么


阅读并尽你最大的努力

一旦应用程序关闭,JVM中的所有内容都将消失。如果要在多个应用程序执行期间保留值,则必须研究一些持久性解决方案。所谓“不使用.txt”是指“不能将其存储在文件系统中”?ArrayList存在于内存中。当您的应用程序终止时,您的arraylist将从内存中删除。如果您希望在关闭应用程序后仍保留一些数据,则需要将数据保留在某个位置,该位置将是一个文件或数据库。现在,如果您不需要.txt,那么可以序列化/反序列化java对象