클래스를 정의하여comparable 인터페이스를 sort로 정렬합니다

2290 단어
1. Comparable 인터페이스가 무엇인지 이 인터페이스는 그것을 실현하는 모든 종류의 대상을 전체적으로 정렬합니다.이 정렬을 이 클래스의 자연 정렬이라고 하고 클래스의 compareTo 방법을 자연 비교 방법이라고 합니다.Collections.sort(및 Arrays.sort)는 자동으로 정렬됩니다.이 인터페이스를 실현하는 대상은 질서정연한 맵의 키나 질서정연한 집합의 요소로 사용할 수 있으며 비교기를 지정할 필요가 없습니다.자연 정렬이 equals와 일치하도록 강력히 추천합니다.이른바 equals와 일치한다는 것은 클래스 C의 모든 e1과 e2에 대해 당연하고 (e1.compareTo((Object)e2)==0)과 e1을 가리킨다.equals((Object)e2)가 같은 브리 값을 가지고 있을 때 클래스 C의 자연 정렬이야말로 equals와 일치한다고 한다.2. int compareTo(T o)에서 이 객체와 지정된 객체의 순서를 비교하는 방법객체가 지정된 객체보다 작거나 같거나 크면 각각 음수, 0 또는 양의 정수가 반환됩니다.(x.compareTo(y)==0)==(x.equals(y)) 이런 방법을 강력히 추천하지만 엄격하게 요구하는 것은 아니다.일반적으로 Comparable 인터페이스를 실현하는 것과 이 조건을 어기는 모든 종류는 이 사실을 명확하게 지적해야 한다."이런 것들은 equals와 일치하지 않는 자연 정렬을 가지고 있음을 추천합니다."매개변수: o - 비교할 개체입니다.반환: 객체가 지정된 객체보다 작거나 같거나 작은지에 따라 음수 또는 영수 또는 양의 정수가 됩니다.버퍼링: ClassCastException - 지정된 객체 유형이 객체와 비교할 수 없는 경우3. 코드는 다음과 같습니다.
package test;


public class Employee implements Comparable {
    private String name;
    private double salary;
 
    public Employee(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }
 
    public String getName() {
        return name;
    }
 
    public double getSalary() {
        return salary;
    }
 
    public void raiseSalary(double byPercent) {
        double raise = salary * byPercent / 100;
        salary += raise;
    }
 
    /**
     * Compares employees by salary
     */
    // , @Override
    public int compareTo(Employee other) {
        return Double.compare(salary, other.salary);
    }
}

테스트 클래스:
package test;

import java.util.*;
 
/**
 * This program demonstrates the use of the Comparable interface.
 */
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(staff);
        
        //print out information about all Employee objects
        for(Employee e : staff) {
            System.out.println("name=" + e.getName() + ", salary=" + e.getSalary());
        }
    }

}

좋은 웹페이지 즐겨찾기