следующий фрагмент, взятый из этого руководства по Java, сравнивает второй аргумент противиться первому, а не наоборот. *Метод HireDate() возвращает объект Date, обозначающий дату найма данного конкретного сотрудника.
import java.util.*;
public class EmpSort {
static final Comparator<Employee> SENIORITY_ORDER =
new Comparator<Employee>() {
public int compare(Employee e1, Employee e2) {
return e2.hireDate().compareTo(e1.hireDate());
}
};
Вот объяснение учебника по Java:
Обратите внимание, что компаратор передает дату найма своего второго аргумента своему первому, а не наоборот. Причина в том, что сотрудник, который был нанят последним, является наименее старшим; сортировка в порядке даты найма поместит список в обратном порядке старшинства.
Тем не менее я не понимаю, почему инвертирование e1 и e2 в compareTo
должно решить проблему.
Любые дополнительные разъяснения?
Заранее спасибо.