Класс Movie
имеет метод compareTo
, определенный таким образом, что this
Фильм считается «большим», чем other
Фильм, если this
Фильм был выпущен позднее, чем other
Фильм.Если они вышли в один и тот же год, их считают равными.Если other
фильм вышел позже, он считается «меньшим».
Пример
Сравнение фильмов this = (8.8, "Force Awakens", 2015)
и other = (7.7, "Star Wars", 1977)
:
return this.year - other.year
return 2015 - 1977
return 38 // i.e. this > other
Обратите внимание, чтоесли вы перевернете фильмы, вы получите противоположный результат, как и следовало ожидать при заказе.
Принцип
Таким образом, "под капотом" программа может вывести, что
(8.8, «Пробуждение силы», 2015)> (3.2, «Возвращение джедая», 1983)> (9.9, «Империя наносит ответный удар», 1980)> (7.7, «Звездные войны»,1977)
в значительной степени путем выборки результатов для вызова compareTo
для различных пар фильмов.Точные детали реализации метода сортировки, такие как используемый алгоритм, не имеют особого значения, и это отвлечено от вас.Важной частью является то, что вы делаете сортировку возможной, определяя естественное упорядочение, то есть позволяя программе последовательно выбирать для любой пары Movie
объектов, какой из двух «больше».