Всегда ли два объекта будут равны, если их метод compareTo () возвращает ноль?
Всегда ли два объекта будут равны, если их метод compareTo () возвращает ноль?
Anonim

Это является рекомендовал сравнить с Только возвращается 0, если звонок на равно на те же объекты бы возвращение правда: сравнить с (e2) == 0 имеет то же самое логическое значение как e1. равно (e2) для любых e1 и e2 класса C. Обратите внимание, что null является не экземпляр какого-либо класса, и e.

Кроме того, может ли equals () вернуть false, даже если содержимое двух объектов одинаково?

4 ответа. В java метод public boolean равно ( Объект obj) наследуется от Объект . Однако реализация метода, как определено в Объект класс в том, что равно метод будет вернуться, если и только если в два объекта сравниваются тем же пример.

Следовательно, возникает вопрос, почему compareTo () должен быть согласован с методом equals () в Java? Это так, потому что интерфейс карты определен в терминах равно операция, но карта выполняет все ключевые сравнения, используя свои сравнить с (или сравнить) метод , поэтому два ключа считаются равный этим метод являются, с точки зрения отсортированной карты, равный.

Имея это в виду, в чем разница между методом == equals () и compareTo ()?

сравнить с : Лексикографическое сравнение двух строк. равно : Сравнивает эту строку с указанным объектом. сравнить с сравнивает две строки по их символам (с тем же индексом) и возвращает целое число (положительное или отрицательное) соответственно. равно () проверяет, являются ли два объекта одинаковыми или нет, и возвращает логическое значение.

Можем ли мы переопределить метод compareTo?

Переопределить метод compareTo Он должен возвращать отрицательное целое число (обычно -1), если текущий запускающий объект меньше переданного один , и положительное целое число (обычно +1), если больше, и 0, если равно. compareTo метод должен вызывать исключение, если переданный объект имеет несовместимый тип или значение null.

Рекомендуемые: