多个对象的序列化与反序列化

序列化:即是将对象化为字符串的存储。

反序列化:即将存储的字符串再转换为对象。

通过Map集合将多个Students类的信息进行序列化与反序列化。

下面为创建的Students类:

import java.io.Serializable;

public class Student implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String name;
	private String sex;
	private int age;
	public Student(String name, String sex, int age, String cla) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.cla = cla;
	}
	public Student() {
		super();
	}
	private String cla;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getCla() {
		return cla;
	}
	public void setCla(String cla) {
		this.cla = cla;
	}
}

  下面为创建的进行序列化与反序列化Students类:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class SerialStudent {

    public static void main(String[] args)throws Exception {
        // TODO Auto-generated method stub
        //调用序列化方法将对象进行序列化
        SerialStud();
        //创建map集合接收反向序列化的对象
        Map<Integer,Student> map = OppositeSerialStud();
        //将序列化的对象打出到控制台
        Iterator<Integer> ite=map.keySet().iterator();
        while(ite.hasNext()){
            Integer key = ite.next();
            Student stu = map.get(key);
            System.out.println(stu.getName()+"\t"+stu.getAge()+"\t"+stu.getSex()+"\t"+stu.getCla());
        }
    }
    //序列化Student类
    public static void SerialStud()throws Exception{
        //存放多个对象信息
        Map<Integer,Student> map = new HashMap<Integer,Student>();
//        String name, String sex, int age, String cla
        map.put(001, new Student("张三丰","男",19,"高中"));
        map.put(002, new Student("李寻欢","男",13,"初中"));
        map.put(003, new Student("周芷若","女",9,"小学"));
        //序列化map集合
        ObjectOutputStream oos = 
                new ObjectOutputStream(new FileOutputStream(new File("c:/ce/student.txt")));
        oos.writeObject(map);
        oos.close();
    }
    //反向序列化Student类
    public static Map<Integer,Student> OppositeSerialStud()throws Exception{
        ObjectInputStream ois = 
                new ObjectInputStream(new FileInputStream(new File("c:/ce/student.txt")));
        Map<Integer,Student> map = (Map<Integer,Student>)ois.readObject();
        ois.close();
        return map;
    }
}

  为了取得可直视的效果,将序列化进行了输出,可以直接在控制台进行观看。

posted on 2016-04-08 21:56  冷知  阅读(527)  评论(0)    收藏  举报