понедельник, 4 апреля 2011 г.

с. 249 Стандартное требование к реализации метода compareTo

 "В языке Java есть стандартное требование ..."
Стандартное требование к реализации метода compareTo ? Не ко всем же методам вообще...
-----
"... если поменять параметры метода compareTo местами, знак возвращаемого числа (но не обязательно его фактическое значение) также должен измениться на противоположный."
Чего это автор так прицепился к Comparable? Глава ведь не о возможностях сравнения объектов...

Вопрос: С помощью какой формулы можно убедиться в правильности реализации метода compareTo?
Ответ: sgn(x.compareTo(y)) = - sgn(y.compareTo(x)).

2 комментария:

  1. signum условия недостаточно для проверки корректности compareTo.
    Например мне кажется что условие транзитивности отсюда не вытекает.

    ОтветитьУдалить
  2. А почему оно должно отсюда вытекать?
    a=b, b=c -> a=c
    a = sgn(x.compareTo(y))
    b = -sqn(y.compareTo(x))
    c = -sqn(z1.compareTo(z2))
    b=c для всех случаев, когда соотношение z1 и z2 совпадает с соотношением y и x. И для всех этих случаев a=c.
    Не вижу необходимости проверять транзитивность.

    ОтветитьУдалить