Официальное определение
Из справочных документов Comparable.compareTo (T) :
Сравнивает этот объект с
указанный объект для заказа. Возвращает
отрицательное целое число, ноль или положительное
целое число, так как этот объект меньше, чем
равно или больше, чем
указанный объект.
Разработчик должен обеспечить
sgn (x.compareTo (y)) ==
-sgn (y.compareTo (x)) для всех x и y. (Это означает, что x.compareTo (y) должен
бросить исключение, если y.compareTo (x)
выдает исключение.)
Разработчик также должен убедиться, что
отношение является переходным:
(x.compareTo (y)> 0 && y.compareTo (z)> 0)
подразумевает x.compareTo (z)> 0.
Наконец, разработчик должен обеспечить
что x.compareTo (y) == 0 подразумевает, что
sgn (x.compareTo (z)) ==
sgn (y.compareTo (z)), для всех z.
Настоятельно рекомендуется, но не
строго требуется, чтобы
(x.compareTo (y) == 0) == (x.equals (y)).
Вообще говоря, любой класс, который
реализует сопоставимый интерфейс
и нарушает это условие должно
четко обозначить этот факт.
рекомендуемый язык "Примечание: это
класс имеет естественный порядок, который
несовместимо с равными. "
В вышеприведенном описании
обозначение sgn (выражение) обозначает
математическая функция signum,
который определен для возврата одного из -1,
0 или 1 в зависимости от того, является ли значение
выражения отрицательны, ноль или
положительны.
Моя версия
Короче говоря:
this.compareTo(that)
возвращает
- отрицательный int , если это <тот </li>
- 0 если это == то
- положительное число , если это> то
, где реализация этого метода определяет фактическую семантику <
>
и ==
(я не имею в виду ==
в смысле оператора идентификации объекта Java)
Примеры * +1048 *
"abc".compareTo("def")
даст что-то меньше 0, так как abc
в алфавитном порядке перед def
.
Integer.valueOf(2).compareTo(Integer.valueOf(1))
даст что-то больше 0, потому что 2 больше 1.
Некоторые дополнительные очки
Примечание: Хорошая практика для класса, реализующего Comparable, объявлять семантику его метода compareTo () в javadocs.
Примечание: Вы должны прочитать хотя бы одно из следующего:
Предупреждение: вы никогда не должны полагаться на возвращаемые значения CompareTo, равные -1
, 0
и 1
. Вы всегда должны проверять на x < 0
, x == 0
, x > 0
, соответственно.