Comparable
определяет естественный порядок среди объектов. Java Collections Framework активно использует этот порядок. По нему упорядочены элементы SortedSet
/SortedMap
, им упорядочиваются элементы списков и массивов в методе sort().Порядок определяется единственным методом
compareTo
. Отрицательный результат означает что текущий объект «меньше» чем переданный параметром, 0
– равен, положительный – больше. Рекомендуется чтобы равные с точки зрения equals объекты всегда были равны с точки зрения compareTo
. С математической точки зрения это должен быть линейный порядок. Он требует выполнения четырех свойств:
1. Антирефлексивность:
x.compareTo(x)
всегда 0
;2. Антисимметричность: если
x.compareTo(y) > 0
, то y.compareTo(x) < 0
;3. Транзитивность: если
x.compareTo(y) > 0
и y.compareTo(z) > 0
, то x.compareTo(z) > 0
;4. Полнота: отношение определено для любых объектов класса (кроме
null
).