定义Employee类(1)该类包含:private成员变量name,sal,birthday,其中birthday为MyDate类的对象;(2)为每一个属性定义getter,setter方法

完整题目如下:

定义Employee类

(1)该类包含:private成员变量name,sal,birthday,其中birthday为MyDate类的对象;

(2)为每一个属性定义getter,setter方法;

(3)重写toString方法输出name,sal,birthday

(4)MyDate类包含:private成员变量year,month,year;并为每一个属性定义getter,setter方法;

(5)创建该类的3个对象,并把这些对象放入ArrayList集合中(ArrayList需使用泛型来定义),对集合中的元素进行排序,并遍历输;

(6)排序方式:调用ArrayList的sort方法,传入Comparator对象[使用泛型],先按照name排序,如果name相同,则按生日日期的先后排序。

第一步根据题目首先创建一个Employee的类,其中包含的属性,其中birthday为MyDate类的对象,这里是应该注意的!!
class Employee implements Comparable<Employee> {//该类实现Comparable接口,因为要进行比较
    
         private String name;
         private int sal;
         private MyDate birthday;
         public Employee(String name, int sal, MyDate birthday) {//带参数构造方法           

         super();
            this.name = name;
            this.sal = sal;
            this.birthday = birthday;
        }

//为每一个属性定义getter,setter方法
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getSal() {
            return sal;
        }
        public void setSal(int sal) {
            this.sal = sal;
        }
        public MyDate getBirthday() {
            return birthday;
        }
        public void setBirthday(MyDate birthday) {
            this.birthday = birthday;
        }

//覆盖tostring方法
        public String toString() {
            
            return this.name+"--"+this.sal+"--"+this.birthday;
        }

//覆盖compareTo方法
        @Override
        public int compareTo(Employee o) {
            
            return this.name.compareTo(o.name);//比较姓名
        }
        
}

第二步:,创建MyDate类并且MyDate类包含:private成员变量year,month,year;并为每一个属性定义getter,setter方法;


class MyDate implements Comparable<MyDate>{//MyDate也要实现Comparable接口!!因为年月日要进行比较
    private int year;d
    private int month;
    private int day;
    public int getYear() {
        return year;
    }
    public void setYear(int year) {
        this.year = year;
    }
    public int getMonth() {
        return month;
    }
    public void setMonth(int month) {
        this.month = month;
    }
    public int getDay() {
        return day;
    }
    public void setDay(int day) {
        this.day = day;
    }
    
    public MyDate() {
        super();
    }
    public MyDate(int year, int month, int day) {
        super();
        this.year = year;
        this.month = month;
        this.day = day;
    }
    @Override
    public String toString() {
        
        return this.year+"--"+this.month+"--"+this.day;
    }
    @Override
    public int compareTo(MyDate o) {//实现该方法!!这里是重点!!
        int years=this.year-o.year;//先比较年
        if(years!=0) {
            return years;
        }
        int months=this.month-o.month;//再比较月
        if(months!=0) {
            return months;
        }
        return this.day-o.day;//最后比较日
    }
     }

第三步: 创建该类的3个对象,并把这些对象放入ArrayList集合中(ArrayList需使用泛型来定义)

public class MyEmployeeTest{
    public static void main(String[] args) {
    Employee e1=new Employee("tom",4000,new MyDate(2002,12,25));//这个地方需要注意!!
    Employee e2=new Employee("fox", 5000,new MyDate(2003, 07, 31));
    Employee e3=new Employee("james", 5800, new MyDate(2004, 11, 15));
    ArrayList<Employee> arrayList=new ArrayList<>();
    arrayList.add(e1);//并把这些对象放入ArrayList集合中
    arrayList.add(e2);
    arrayList.add(e3);

第四步也是最后一步:排序方式:调用ArrayList的sort方法,传入Comparator对象[使用泛型],先按照name排序,如果name相同,则按生日日期的先后排序。

arrayList.sort(new Comparator<Employee>()

@Override
        public int compare(Employee s1, Employee s2) {
            int i=s1.getName().compareTo(s2.getName());
            if(i!=0) {
                return i;
            }    
            return s1.getBirthday().compareTo(s2.getBirthday());
        }
    });

//遍历
    arrayList.forEach(employee->System.out.println(employee));
    }

运行结果如下:名字不同,先按照名字排序

 

运行结果如下:名字相同,按照生日进行排序

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值