У меня есть два класса - Task (который реализует Comparable) и DeadlinedTask (где DeadlinedTask расширяет Task). И для каждого из них я написал перегруженную функцию CompareTo (у каждого есть CompareTo (Task) и CompareTo (DeadlinedTask)).
Идея состоит в том, что я могу сортировать обычные Задачи по категориям и DeadlinedTasks по крайнему сроку, но я также хочу, чтобы все DeadlinedTasks были отсортированы выше Задач.
Когда я вызываю Collections.sort (myListOfTasks) для списка только задач (без DeadlinedTasks), все работает как шарм.
Однако, когда у меня есть список задач и DeadlinedTasks, объекты меняют порядок, но они не сортируются полностью.
Я попытался вернуть числа, отличные от 1, в сравнениях между классами (1, 1000, 1000000 все сделали то же самое). Есть ли способ сделать это через CompareTo и Collections.sort, есть ли другие функции Java, которые я могу использовать, или мне нужно написать свою собственную функцию поиска (в качестве компаратора?)?
Задача сравнить с методами:
public int compareTo(Task other){
if(this.GetCategory().compareTo(other.GetCategory())==0)
return this.GetName().compareTo(other.GetName());
else
return this.GetCategory().compareTo(other.GetCategory());
}
public int compareTo(DeadlinedTask other){
return 1;
}
DeadlinedTask сравнить методы:
public int compareTo(Task other){
return -1;
}
public int compareTo(DeadlinedTask other){
if(this.GetDeadline().compareTo(other.GetDeadline())==0)
return this.GetName().compareTo(other.GetName());
else
return this.GetDeadline().compareTo(other.GetDeadline());
}
Спасибо за любую помощь