各位小伙伴们大家好,在之前的文章中,小编介绍了一些关于对象的序列化与反序列化的一些知识,这次小编要介绍的是序列化集合的练习。
练习:序列化集合
当我们想在文件中保存多个对象的时候,可以把对象存储到一个集合中,对集合进行序列化和反序列化。
分析:
1. 定义一个存储Person对象的ArrayList集合
2. 往ArrayList集合中存储Person对象
3. 创建一个序列化流ObjectOutputStream对象
4. 使用ObjectOutputStream对象中的方法writeObject,对集合进行序列化
5. 创建一个反序列化ObjectInputStream对象
6. 使用ObjectInputStream对象中的方法readObject读取文件中保存的集合
7. 把Object类型的集合转换为ArrayList类型
8. 遍历ArrayList集合
9. 释放资源
代码如下(先定义一个Person类):
public class Person implements Serializable {
private static final long serialVersionUID = 111;
private String name;
public int age;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
main方法:
public class Demo03Text {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//1. 定义一个存储Person对象的ArrayList集合
ArrayList list=new ArrayList<>();
//2. 往ArrayList集合中存储Person对象
list.add(new Person("小明",12));
list.add(new Person("小欢",13));
list.add(new Person("小可",14));
//3. 创建一个序列化流ObjectOutputStream对象
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("D:a.txt"));
//4. 使用ObjectOutputStream对象中的方法writeObject,对集合进行序列化
oos.writeObject(list);
//5. 创建一个反序列化ObjectInputStream对象
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("D:a.txt"));
//6. 使用ObjectInputStream对象中的方法readObject读取文件中保存的集合
Object o= ois.readObject();
//7. 把Object类型的集合转换为ArrayList类型
ArrayList list2=(ArrayList)o;
//8. 遍历ArrayList集合
for (Person p : list2) {
System.out.println(p);
}
//9. 释放资源
ois.close();
oos.close();
}
关于序列化集合练习,就是用ArrayList集合存储Person对象的数据,然后定义一个ObjectOutputStream对象,调用ObjectWrite读取数据,对ArrayListJava之ArrayList集合的简单介绍进行序列化,反序列化与序列化的方法一样。里面也涉及以前的知识,大家有空可以翻一翻小编之前写的文章,关于这篇文章,小编就先说到这里,希望可以帮到大家,也欢迎各位小伙伴,补充和纠错。