【发布时间】:2017-08-31 11:03:32
【问题描述】:
我有一个 Employee 类实现 Comparable 接口
public class Employee implements Comparable<Employee> {
private int id;
private String name;
private int age;
private long salary;
public Employee(int id, String name, int age, int salary) {
this.id = id;
this.name = name;
this.age = age;
this.salary = salary;
}
@Override
public int compareTo(Employee emp) {
return (this.id - emp.id);
}
@Override
public String toString() {
return "[id=" + this.id + ", name=" + this.name + ", age=" + this.age + ", salary=" +
this.salary + "]";
}
}
我有一个 Employee[] 数组我正在使用 Arrays.sort() 对数组进行排序
Employee[] empArr = new Employee[4];
empArr[0] = new Employee(10, "Mikey", 25, 10000);
empArr[1] = new Employee(20, "Arun", 29, 20000);
empArr[2] = new Employee(5, "Lisa", 35, 5000);
empArr[3] = new Employee(1, "Pankaj", 32, 50000);
Arrays.sort(empArr);
我的问题是如何在内部进行排序,
是不是像emArr[0].compareTo(emArr[1]) 然后根据需要交换元素?
我想知道内部是如何进行比较和交换的? Comparatable's compareTo(Object o) 和 Comparator's compare(o1,o2) 扮演什么角色?
【问题讨论】:
-
在谷歌上搜索你会发现很多例子说明在这种情况下排序是如何工作的。
-
当然,不同的排序算法排序不同。了解 SelectionSort、Quicksort、MergeSort 等
-
我确实搜索了很多
-
你有没有试过自己查看
Arrays.sort()的源代码? -
@piechuckerr:Comparator 和 Comparable 只是让排序知道哪些元素应该被视为“更大”。它们基本上是您定义自己的
>和<的方式。那里没有什么特别的。
标签: java sorting collections comparator comparable