企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 如何在 java 中序列化`ArrayList` > 原文: [https://beginnersbook.com/2013/12/how-to-serialize-arraylist-in-java/](https://beginnersbook.com/2013/12/how-to-serialize-arraylist-in-java/) [`ArrayList`](https://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html) 是[**默认**可序列化的](https://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html)。这意味着您无需显式实现`Serializable`接口以序列化`ArrayList`。在本教程中,我们将学习如何序列化和反序列化`ArrayList`。 ## 例: **序列化**:运行下面的类,它将创建一个文件`myfile`,它将以字节流的形式具有`ArrayList`对象。我们将在接收器端使用`myfile`从字节流重新创建`Object`。 **注意**:我们没有在下面的类中实现`Serializable`接口,因为默认情况下`ArrayList`已经被序列化了。 ```java 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`的相同元素。 ```java 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); } } } ``` 输出: ```java Hello Hi Howdy ``` 这就是`ArrayList`的序列化主题的全部内容。如果你有任何问题,请让我知道。