Я понимаю, что мы можем сортировать или заказывать объекты, хранящиеся в коллекции, в соответствии с нашими требованиями.
В то время как я получаю глубокое понимание, меня не убеждает тот факт, что восходящий и нисходящий порядок расположения достигается путем (a - b) → возрастания или (b - a) → спуска, где "a" и "b" являются членами класса, которые мы выбрали для сравнения.
Пример:
public int compareTo(Student s) {
return this.grade - s.grade; //ascending order
// return s.grade - this.grade; // descending order
}
Что такое логика для упорядочения элементов объекта? как "(this.grade - s.grade)", если положительный 1 перемещает "this.grade" вперед и ставит "s.grade" следующим образом, почему бы и нет другого пути? Кто проверяет результат сравнения (+1, -1, 0), а затем помещает в порядке возрастания или убывания соответственно, есть ли какая-либо документация, описывающая внутреннюю работу этой части?
public class Student implements Comparable <Student>{
String name;
int grade;
public Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
public int compareTo(Student s) {
return this.grade - s.grade; //ascending order
// return s.grade - this.grade; // descending order
}
public String toString() {
return this.name + ", " + this.grade;
}
}
Пожалуйста, поделитесь, большое спасибо!
Edit:
Я получаю документы Java, мой вопрос таков:
sort these grades (13, 2)
Case ascending -> return this.grade - s.grade;
picture in my mind:
compare (13, 2) , (13 - 2) > 0 so move 2 to front.
result -> 2, 13
------
Case descending -> return s.grade - this.grade;
picture in my mind:
compare (2, 13) , (2 - 13) < 0 so move 13 to front.
result -> 13, 2
"Как это происходит?" был мой первоначальный вопрос. Я читал документы, все еще не мог понять.