Java 核心技术(第八版)卷1:基础知识:例5-8P196EmployeeSortTest

本例子是说:要想使用Arrays 类的 sort() 功能,就必须实现 Comparable<T> 接口,然后自己写一个compareTo()方法,代码如下:

import java.util.*;

public class EmployeeSortTest
{

    public static void main(String [] args)
    {

        Employee_from_interface[] staff=new Employee_from_interface[3];
        //用经理和员工来填充这个staff数组
        staff[0]=new Employee_from_interface("Tom Zhou",35000,2022,7,10);
        staff[1]=new Employee_from_interface("Tom Zhou",75000,2022,7,10);
        staff[2]=new Employee_from_interface("Jerry Mouse",38000,2022,8,10);
        Arrays.sort(staff);
        //打印出数组的信息
        for(Employee_from_interface e:staff)
        {
            System.out.println("name=" + e.getName() + ",salary=" + e.getSalary());
        }
    }
}
class Employee_from_interface implements Comparable<Employee_from_interface>
{
    public Employee_from_interface(String n,double s,int year,int month,int day)
    {
        name=n;
        salary=s;
        GregorianCalendar calendar=new GregorianCalendar(year,month-1,day);
        hireDay=calendar.getTime();
    }
    public String getName()
    {
        return name;
    }
    public double getSalary()
    {
        return  salary;
    }
    public Date getHireDay()
    {
        return hireDay;
    }
    public void raiseSalary(double byPercent)
    {
        double raise=salary*byPercent/100;
        salary+=raise;
    }
    //根据赚钱薪水的多少来 比较雇员
    //返回 负数1, 如果薪水比other 少,0代表相等 ,正数1代表赚的比other 多
    public int compareTo(Employee_from_interface other)
    {
        if(salary<other.salary) return -1;
        if(salary>other.salary) return 1;
         return 0;

    }
    private String name;
    private double salary;
    private Date hireDay;
}
class Employee
{
    public Employee(String n,double s,int year,int month,int day)
    {
        name=n;
        salary=s;
        GregorianCalendar calendar=new GregorianCalendar(year,month-1,day);
        hireDay=calendar.getTime();
    }
    public String getName()
    {
        return name;
    }
    public double getSalary()
    {
        return  salary;
    }
    public Date getHireDay()
    {
        return hireDay;
    }
    public void raiseSalary(double byPercent)
    {
        double raise=salary*byPercent/100;
        salary+=raise;
    }
    private String name;
    private double salary;
    private Date hireDay;
}


运行结果:

name=Tom Zhou,salary=35000.0
name=Jerry Mouse,salary=38000.0
name=Tom Zhou,salary=75000.0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值