📜  如何在Java中序列化 ArrayList?

📅  最后修改于: 2022-05-13 01:55:31.353000             🧑  作者: Mango

如何在Java中序列化 ArrayList?

数组列表 是Java集合框架下的一个类。它存在于Java.util包中。 ArrayList 是Java中可重新调整大小的数组,即与数组不同,ArrayList 的大小可以根据我们的要求动态修改。此外,ArrayList 类提供了许多有用的方法来对大量数据执行插入、删除和许多其他操作。

什么是序列化

序列化对象意味着将其状态转换为字节流,以便可以将字节流恢复为对象的副本。如果Java对象的类或其任何超类实现了Java.io.Serializable接口或其子接口Java.io.Externalizable,则该对象是可序列化的。当一个对象被序列化时,标识其类的信息被记录在序列化流中。

序列化 ArrayList:

在Java中,ArrayList 类默认实现了一个Serializable接口,即 ArrayList 默认是序列化的。我们可以直接使用ObjectOutputStream来序列化它。

Java
// Java program to demonstrate serialization of ArrayList
  
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
  
public class ArrayListEx {
  
    // method to serialize an ArrayList object
    static void serializeArrayList()
    {
  
        // an ArrayList
        // object "namesList"
        // is created
        ArrayList namesList
            = new ArrayList();
  
        // adding the data into the ArrayList
        namesList.add("Geeks");
        namesList.add("for");
        namesList.add("Geeks");
  
        try {
            // an OutputStream file
            // "namesListData" is
            // created
            FileOutputStream fos
                = new FileOutputStream("namesListData");
  
            // an ObjectOutputStream object is
            // created on the FileOutputStream
            // object
            ObjectOutputStream oos
                = new ObjectOutputStream(fos);
  
            // calling the writeObject()
            // method of the
            // ObjectOutputStream on the
            // OutputStream file "namesList"
            oos.writeObject(namesList);
  
            // close the ObjectOutputStream
            oos.close();
  
            // close the OutputStream file
            fos.close();
  
            System.out.println("namesList serialized");
        }
        catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
  
    // Driver method
    public static void main(String[] args) throws Exception
    {
        // calling the
        // serializeArrayList() method
        serializeArrayList();
    }
}


输出:

笔记:
ArrayList 中存储的所有元素也应该是可序列化的,以便序列化 ArrayList,否则将抛出 NotSerializableException。