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);
}
}
}
输出:
Hello
Hi
Howdy
这就是ArrayList
的序列化主题的全部内容。如果你有任何问题,请让我知道。