означает из -
- отрицание, простое и понятное.Я видел эту идиому в числовых сравнениях, которые возвращают значение -1
, 0
или +1
, в зависимости от сравнения.Хотя это сработало бы и для тех, кто возвращает величину, -n
, 0
, +n
(где n
идентичен).
Просто проверяется, что compareTo
Операции дают вам противоположное значение при обращении операндов.Другими словами, это утверждение, что compareTo
функционирует как ожидалось (но не обязательно так, как гарантировано - см. Ниже).
Если a < b
и b < a
(то есть, a
оба меньше, чем, и больше, чем b
), тогда у вас есть серьезная проблема, которую необходимо исправить: -)
Из CompareTo
документации :
Разработчик должен обеспечить sgn (x.compareTo (y)) == -sgn (y.compareTo (x)) для всех x и y.
В вышеприведенном описании обозначение sgn (expression) обозначает математическую функцию signum, которая определена для возврата одного из значений -1, 0 или 1 в зависимости от того, является ли значение выражения отрицательным, нулевым или положительным.
На основании этогоутверждение не совсем верно, оно должно сравнивать Integer.signum (a.compareTo (b))
, а не просто a.compareTo (b)
, если только у него нет дополнительных знаний о том, что реализация CompareTo
гарантированно возвращает симметричные (около нуля) значения.