如何在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。