java中序列化arraylist需确保元素实现serializable接口,用objectoutputstream写入、objectinputstream读取;注意不可序列化对象、类变更兼容性问题,推荐json等替代方案。

Java 中将 ArrayList 序列化保存到文件,核心是让集合中的元素类型实现 Serializable 接口,再用 ObjectOutputStream 写入文件。
确保元素类型可序列化
ArrayList 本身可序列化,但其中的每个元素必须也实现 java.io.Serializable。例如:
- 基本包装类(
String、Integer、Boolean等)默认支持; - 自定义类需显式实现
Serializable,并建议声明serialVersionUID:
private static final long serialVersionUID = 1L;
private String name;
private int age;
// 构造方法、getter/setter 省略
}
使用 ObjectOutputStream 写入文件
创建 FileOutputStream 和包装它的 ObjectOutputStream,调用 writeObject() 即可:
list.add(new Person("张三", 25));
list.add(new Person("李四", 30));
try (ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("persons.dat"))) {
oos.writeObject(list);
} catch (IOException e) {
e.printStackTrace();
}
反序列化读回 ArrayList
读取时用 ObjectInputStream,注意强转类型,并处理 ClassNotFoundException:
new FileInputStream("persons.dat"))) {
ArrayList
System.out.println(loadedList);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
注意事项与替代方案
- 序列化是 Java 原生机制,但生成的文件不可读、不跨语言、易受类结构变更影响;
- 若需可读性或跨平台,推荐用 JSON(如 Jackson 或 Gson)或 XML;
- 敏感字段可用
transient修饰跳过序列化; - 避免序列化含线程、IO 流、GUI 组件等不可序列化对象的集合。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











