public class EmployeeSortTest {
public static void main(final String[] args) {
final 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);
for (final Employee e : staff) {
System.out.println("name=" + e.getName() + ",salary=" + e.getSalary());
}
}
}
class Employee implements Comparable<Employee> {
public Employee(final String n, final double s) {
name = n;
salary = s;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public void raiseSalary(final double byPercent) {
final double raise = salary * byPercent/100;
salary += raise;
}
@Override
public int compareTo(final Employee other) {
if (salary < other.salary) {
return -1;
}
if (salary > other.salary) {
return 1;
}
return 0;
}
private final String name;
private double salary;
}
我與Java初學者,我從先生卡·S·霍斯特曼和他的同事,Java核心,卷我寫的書學習:基本面,我發現了一些我不太明白的東西。 「employeesorttest.java」的示例,第243頁。我可以忽略使用的「可比性」
我無法得到的是方法compareTo
。它如何改變輸出?該方法只返回三個數字:0,-1和1.它沒有改變任何位置或來自staff
的對象。另外,如果代碼arrays.sort(staff)
確實有效,爲什麼我們仍然需要使用該界面?
我知道這兩個代碼之間必定有一些關係。