序列化一组对象,并实现存取与反序列化(treeSet方法)【Java笔试】

序列化一组对象,并实现排序和反序列换存取

序列化一组对象,并实现存取与反序列化(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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值