原文: https://beginnersbook.com/2013/12/how-to-serialize-arraylist-in-java/
ArrayList 是默认可序列化的。这意味着您无需显式实现Serializable接口以序列化ArrayList。在本教程中,我们将学习如何序列化和反序列化ArrayList。
例:
序列化:运行下面的类,它将创建一个文件myfile,它将以字节流的形式具有ArrayList对象。我们将在接收器端使用myfile从字节流重新创建Object。 注意:我们没有在下面的类中实现Serializable接口,因为默认情况下ArrayList已经被序列化了。
package beginnersbook.com;import java.util.ArrayList;import java.io.*;public class ArrayListSerialization{public static void main(String [] args){ArrayList<String> al=new ArrayList<String>();al.add("Hello");al.add("Hi");al.add("Howdy");try{FileOutputStream fos= new FileOutputStream("myfile");ObjectOutputStream oos= new ObjectOutputStream(fos);oos.writeObject(al);oos.close();fos.close();}catch(IOException ioe){ioe.printStackTrace();}}}
反序列化:
在这个类中,我们从myfile中检索字节流,我们使用上面的类存储了这些字节流。我们将返回的对象类型转换为ArrayList并显示ArrayList的元素。观察输出:我们获得了在序列化之前添加到ArrayList的相同元素。
package beginnersbook.com;import java.io.*;import java.util.ArrayList;public class DeSerializationClass{public static void main(String [] args){ArrayList<String> arraylist= new ArrayList<String>();try{FileInputStream fis = new FileInputStream("myfile");ObjectInputStream ois = new ObjectInputStream(fis);arraylist = (ArrayList) ois.readObject();ois.close();fis.close();}catch(IOException ioe){ioe.printStackTrace();return;}catch(ClassNotFoundException c){System.out.println("Class not found");c.printStackTrace();return;}for(String tmp: arraylist){System.out.println(tmp);}}}
输出:
HelloHiHowdy
这就是ArrayList的序列化主题的全部内容。如果你有任何问题,请让我知道。
