序列化一组对象,并实现排序和反序列换存取
序列化一组对象,并实现存取与反序列化(treeSet方法)
要求:使用一个用户类自定义属性并创建10个对象,按照用户年龄升序排序,若年龄相同则按姓名的字符自然次序排序,然后把10个对象序列化并写入d盘中,并通过实现反序列化循环输出。
使用treeset方法存储对象时,由于该集合容器底层是二叉树,所以在存储自定义对象时一定要
提供比较策略
可以根据自己的需要编写 内部比较策略或外部比较策略 在外部比较策略不需要进行序列化时可以将外部比较策略写成匿名内部类形式,但该要求有序列化存储,所以不再使用匿名内部类方式实现比较策略的提供
在此只实现内部比较策略和外部比较策略(实际应用时,提供一种形式的比较策略即可)。
自定义Worker类(同时实现了内部比较策略——通过实现Comparable接口)
import java.io.Serializable;
public class Worker implements Serializable,Comparable<Worker>{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private int age;
private int salary;
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;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public Worker() {
super();
}
public Worker(String name, int age, int salary) {
super();
this.name = name;
this.age = age;
this.salary = salary;
}
@Override
public String toString() {
return "Worker [name=" + name + ", age=" + age + ", salary=" + salary + "]";
}
@Override
//内部比较策略,通过实现Comparable接口实现comparaTo方法实现自定义比较策略
public int compareTo(Worker o) {
if(this.getAge()!=o.getAge()) {
return this.getAge()-o.getAge();
}else {
return this.getName().compareTo(o.getName());
}
}
}
自定义类内实现了自定义比较策略
测试类代码1(使用内部比较策略,无外部比较策略)
import java.io.File;
import java.io