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

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

本例子是说:要想使用Arrays 类的 sort() 功能,就必须实现 Comparable 接口,然后自己写一个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
{
    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(salaryother.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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/799372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存