实现员工年龄排序(TreeSet练习)

定义一个Employee类,该类包含: private成员变量name, age, birthday,其中birthday 为MyDate 类的对象;
并为每一个属性定义getter,setter方法;并重写toString方法输出name,age,birthday
MyDate类包含:
private)成员变量month, day, year;并为每一个属性定义getter,setter 方法;
创建该类的5个对象,并把这些对象放入TreeSet集合中,对集合中的元素进行排序,并遍历输出:
使Employee实现Comparable接口,并按name和lbirthday排序

public class MyDate implements Comparable{
    
    
	private Integer month;
	private Integer day;
	private Integer year;

	public MyDate(Integer year, Integer day, Integer month) {
    
    
		super();
		this.month = month;
		this.day = day;
		this.year = year;
	}

	@Override
	public String toString() {
    
    
		return " year=" + year + ", day=" + day + ", momth=" + month ;
	}

	public MyDate() {
    
    
		super();
	}

	public Integer getMonth() {
    
    
		return month;
	}

	public void setMonth(Integer month) {
    
    
		this.month = month;
	}

	public Integer getDay() {
    
    
		return day;
	}

	public void setDay(Integer day) {
    
    
		this.day = day;
	}

	public Integer getYear() {
    
    
		return year;
	}

	public void setYear(Integer year) {
    
    
		this.year = year;
	}

	@Override
	public int compareTo(Object o) {
    
    
		// TODO Auto-generated method stub
		MyDate md = (MyDate) o;
		int one = this.getYear().compareTo(md.getYear());
		if (one > 0){
    
    
			return -1;
		}else if (one < 0) {
    
    
			return 1;
		}else {
    
    
			int two = this.getMonth().compareTo(md.getMonth());
			if (two > 0) {
    
    
				return -1;
			}else if (two < 0) {
    
    
				return 1;
			}else {
    
    
				int three = this.getDay().compareTo(md.getDay());
				if (three > 0) {
    
    
					return -1;
				}else if (three < 0) {
    
    
					return 1;
				}else {
    
    
					return 0;
				}
			}
		}
	}
	
}
import java.util.Date;

public class Employee implements Comparable{
    
    
	private String name;
	private int age;
	private MyDate birthday;
	Date d1 = new Date();
	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 MyDate getBirthday() {
    
    
		return birthday;
	}
	public void setBirthday(MyDate birthday) {
    
    
		this.birthday = birthday;
	}
	@Override
	public String toString() {
    
    
		age = d1.getYear() + 1900 - this.getBirthday().getYear();
		return "name:" + name +" age:"+ age +" birthday:" + birthday;
	}
	@Override
	public int compareTo(Object o) {
    
    
		// TODO Auto-generated method stub
		Employee emp = (Employee) o;
		int one = this.getBirthday().compareTo(emp.getBirthday());
		if (one == 0) {
    
    
			return this.getName().compareTo(emp.getName());
		}else {
    
    
			return one;
		}
	}
	
	public Employee(String name, MyDate birthday) {
    
    
		super();
		this.name = name;
		this.birthday = birthday;
	}
	public Employee() {
    
    
		super();
	}
	public Employee(String name, int age, MyDate birthday) {
    
    
		super();
		this.name = name;
		this.age = age;
		this.birthday = birthday;
	}
	
}
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

import org.junit.Test;

public class TestEmp {
    
    
	//演示自然排序
	//年龄升序
	//需要先添加JUnit库
	@Test
	public void testOne() {
    
    
		// TODO Auto-generated method stub
		Set set = new TreeSet();
		Employee e1 = new Employee("小强",new MyDate(1990,5,8));
		Employee e2 = new Employee("小明",new MyDate(1991,10,18));
		Employee e3 = new Employee("小白",new MyDate(1991,7,20));
		Employee e4 = new Employee("小黄",new MyDate(1992,7,20));
		Employee e5 = new Employee("小黑",new MyDate(1992,7,10));
		set.add(e1);
		set.add(e2);
		set.add(e3);
		set.add(e4);
		set.add(e5);
		for (Object object : set) {
    
    
			System.out.println(object);
		}
	}
	//演示定制排序
	//年龄降序
	@Test
	public void testTwo() {
    
    
		// TODO Auto-generated method stub
		Set set = new TreeSet(new Comparator() {
    
    

			@Override
			public int compare(Object o1, Object o2) {
    
    
				// TODO Auto-generated method stub
				Employee emp1 = (Employee) o1;
				Employee emp2 = (Employee) o2;
				int one = emp1.getBirthday().compareTo(emp2.getBirthday());
				if (one > 0) {
    
    
					return -1;
				}else if (one < 0) {
    
    
					return 1;
				}else {
    
    
					return emp2.getName().compareTo(emp1.getName());
				}
			}
			
		});
		Employee e1 = new Employee("小强",new MyDate(1990,5,8));
		Employee e2 = new Employee("小明",new MyDate(1991,10,18));
		Employee e3 = new Employee("小白",new MyDate(1991,7,20));
		Employee e4 = new Employee("小黄",new MyDate(1992,7,20));
		Employee e5 = new Employee("小黑",new MyDate(1992,7,10));
		set.add(e1);
		set.add(e2);
		set.add(e3);
		set.add(e4);
		set.add(e5);
		for (Object object : set) {
    
    
			System.out.println(object);
		}
	}
}

本文章是自己在学习尚硅谷网课上的练习

猜你喜欢

转载自blog.csdn.net/qq_45895520/article/details/120044747