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

max аватар
127
Находится в разделах:

Интерфейс 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, наиболее простой метод сортировки - по названиям. 
Компаратор будет выглядеть приблизительно таким образом:
info picture Важно помнить, что когда мы переопределяем equals() метод, мы ДОЛЖНЫ принимать аргумент типа Object, а когда переопределяем compareTo(), должны принимать аргумент именно того типа, который планируем сортировать.

Собрав всю информацию воедино, наш класс должен выглядеть следующим образом:

Теперь после вызова Collections.sort(dvdList) получим следующим результат:

Ну что ж, наш ArrayList сортируется по названиям. Конечно, если мы хотим, чтобы наша система была по-настоящему крутой, нам следовало бы обеспечить множество вариантов сортировки. 
Мы можем реализовывать compareTo() только один раз в классе.


Конец
Джеймс Рассел Лоуелл абсолютно уверен в том, что полезно время от времени ставить знак вопроса на вещах, которые тебе давно представляются несомненными.

CAPTCHA
В последнее время порядком подзаип"али комменты про дешевые медикаменты и всякий хлам, что и послужило поводом для установки капчи. Введите, пожалуйста, символы, изображенные на картинке. Надеюсь, это не отобьет у Вас желание оставить автограф
Image CAPTCHA
Image CAPTCHA
Введите символы, изображенные на картинке

а как сортировать черех CompareTo для intовских значений?

public int compare(InterfaceGifts o1, InterfaceGifts o2) {
return o1.getPrice()-o2.getPrice();
}

Отправить комментарий

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке