core-java学习【四】- 接口 - 排序

package compare;

public class Employee implements Comparable<Employee>
{
    // 构造器
    public Employee( String firstName , String lastName , double salary )
    {
        this.firstName = firstName ;
        this.lastName = lastName ;
        this.salary = salary ;
    }
    
    // 成员方法
    public String getName()
    {
        return this.firstName + " " + this.lastName ;
    }
    
    public double getSalary()
    {
        return this.salary ;
    }
    
    public void raiseSalary(double byPercent)
    {
        double raise = this.salary * byPercent / 100 ;
        this.salary += raise ;
    }
    
    // 根据Employee的salary排序
    // 要让一个类实现排序服务必须让它实现compareTo方法
    // 因为要向 sort 方法提供对象的比较方式
    public int compareTo(Employee other)
    {
        // 用该对象与other进行比较,如果该对象小于other则返回负整数;如果大于则返回正整数;否则(相等时)则返回0
        if(this.salary < other.salary)
            return -1 ;
        if(this.salary > other.salary)
            return 1 ;
        return 0 ;
    }
    
    private String firstName ;
    private String lastName ;
    private double salary ;
}

 

 

package compare;

import java.util.Arrays;

public class EmployeeSortTest
{
    public static void main(String[] args) 
    {
        Employee[] staff = new Employee[3] ;
        
        staff[0] = new Employee("Harry", "Hacker", 35000) ;
        staff[1] = new Employee("Carl", "Cracker", 75000) ;
        staff[2] = new Employee("Tony", "Tester", 38000) ;
        
        /* 使用Arrays类的sort方法实现排序
         * 原理是:使用mergesort算法对数组中的元素进行排序,
         * 要求数组中的元素必须属于实现了Comparable接口的类,并且元素之间必须是可以比较的。
         */
        Arrays.sort(staff) ;
        
        // 输出所有Employee实例对象的信息
        for(Employee e : staff)
        {
            System.out.println("Name= " + e.getName() + ", salary= " + e.getSalary()) ;
        }
    }

}

 

你可能感兴趣的:(java,算法)