Java. Переопределение hashCode() и equals()

max аватар
106
Находится в разделах:

Вы - объект.  Вы имеете свое собственное состояние, поведение и работу.  Если исключить примитивы, то можно сказать, что все в Java - объект. Не просто объект, а Object с большой буквы O.  Любое исключение, любое событие, любой массив наследуется от java.lang.Object.  

 

Метод toString.

Его следует переопределять в тех случаях, когда необходимо иметь более подробную информацию про объект.  Кстати, когда ссылка на объект передается в метод System.out.println(), метод toString()  объекта вызывается автоматически.

Запуск класса HardToRead выдает следующий результат:

Данный вывод - это то, что вы получаете не переопределяя метод toString() класса Object.  Метод печатает имя класса, за ним @ и шестнадцатиричное представление хэшкода объекта.

Результат будет более читабельным:

Переопределение equals()

При сравнении двух ссылок на объекты с использованием оператора == дает результат true только если две ссылки указывают на один и тот же объект. Класс String  и классы-врапперы  имеют переопределенные  методы equals(), поэтому можно сравнивать два разных объекта по значению. 

Переопределение hashCode()

Хешкоды обычно увеличивают производительность больших коллекций данных. Значение хешкода объета используется некоторыми классами-коллекциями.  Можно рассматривать хешкод как тип ID объекта, необязательно уникальный. Коллекции, такие как HashMap и HashSet используют значение хешкода объекта для определения того, как объект должен храниться в коллекции.


Конец
Виктор Суворов, автор многочисленных книг по истории Второй Мировой войны, майор ГРУ, разведчик склоняется к тому, что побеждает в этой жизни только тот, кто победил сам себя. Кто победил свой страх, свою лень, свою неуверенность.

автор, ну и где же переопределение этих методов?!

Тема сис... переопределения equals(), hashCode() не раскрыта! Я негодую

Спасибо, неплохо написано)

Отправить комментарий

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке