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)
确实有效,为什么我们仍然需要使用该界面?
我知道这两个代码之间必定有一些关系。