Java. Интерфейс Comparable

Интерфейс Comparable используется методом Collections.sort() и java.util.Arrays.sort() для сортировки списков и массивов объектов.
Для реализации интерфейса Comparable, класс должен реализовать один-единственный метод - compareTo(). Вот как выглядит вызов метода:
Метод compareTo() возвращает int со следующими характеристиками:
- negative ( if thisObject < anotherObject)
- zero (if thisObject == anotherObject)
- positive (If thisObject > anotherObject)
Метод sort() использует compareTo() для определения того, как список или массив объектов должен быть отсортирован. Для реализации своей сортировки можно использовать любые критерии сравнения.
В строке #1 мы объявляем класс DVDInfo, который реализует интерфейс Comparable. На строке 2 мы реализуем метод compareTo() для сравнения двух DVDInfo объектов. Поскольку мы знаем, что названия - строки, и что строки реализуют Comparable, наиболее простой метод сортировки - по названиям.
Компаратор будет выглядеть приблизительно таким образом:
![]() |
Важно помнить, что когда мы переопределяем equals() метод, мы ДОЛЖНЫ принимать аргумент типа Object, а когда переопределяем compareTo(), должны принимать аргумент именно того типа, который планируем сортировать. |
Собрав всю информацию воедино, наш класс должен выглядеть следующим образом:
Теперь после вызова Collections.sort(dvdList) получим следующим результат:
Ну что ж, наш ArrayList сортируется по названиям. Конечно, если мы хотим, чтобы наша система была по-настоящему крутой, нам следовало бы обеспечить множество вариантов сортировки.
Мы можем реализовывать compareTo() только один раз в классе.
Конец
Материалы, которые могут вас заинтересовать
- Java. Создание обобщенных методов
- Java. Обобщенные типы (Generic Declarations)
- Java. Использование карт (Using Maps)
- Java. Использование наборов (Using Sets)
- Java. Использование списков (Using Lists)
- Java. Конвертирование массивов в списки и списков в массивы
- Java. Поиск в массивах и коллекциях
- Java. Сортировка с помощью класса Arrays
- Java. Сортировка с помощью Comparator








а как сортировать черех CompareTo для intовских значений?
public int compare(InterfaceGifts o1, InterfaceGifts o2) {
return o1.getPrice()-o2.getPrice();
}
Отправить комментарий