Равен аналогичен оператору ==, который предназначен для проверки идентичности объекта, а не равенства объектов. HashCode - это метод, с помощью которого класс неявно или явно разбивает данные, хранящиеся в экземпляре класса, на одно хеш-значение, которое представляет собой 32-разрядное целое число со знаком. ключевое отличие между равно и hashCode в Джава в том, что equals используется для сравнения двух объектов, а hashCode используется для хеширования, чтобы решить, к какой группе следует относить объект.
1. Обзор и основные отличия
2. Что такое равный в Java
3. Что такое hashCode в Java
4. Сравнение бок о бок - равно против hashCode в Java в табличной форме
5. Резюме
Метод equals используется для сравнения двух объектов. Метод equals по умолчанию определен в классе объекта. Эта реализация похожа на оператор ==. Две ссылки на объекты равны, только если они указывают на один и тот же объект. Можно переопределить метод equals.
Рисунок 01: Java-программа с равными
Оператор System.out.println (s1.equals (s2)) даст ответ false, поскольку s1 и s2 ссылаются на два разных объекта. Это было похоже на утверждение System.out.println (s1 == s2);
Оператор System.out.println (s1.equals (s3)) даст ответ true, поскольку s1 и s3 ссылаются на один и тот же объект. Это было похоже на утверждение System.out.println (s1 == s3);
В классе Student нет метода равных. Следовательно, в классе Object вызывается equals. Истина отображается, только если ссылка на объект указывает на тот же объект.
Рисунок 02: Java-программа с переопределенными равными
В соответствии с вышеуказанной программой метод equals переопределяется. Объект передается методу, а его тип приводится к Студенту. Затем значения идентификаторов проверяются. Если значения идентификатора похожи, он вернет true. Если нет, он вернет false. Идентификаторы s1 и s2 похожи. Таким образом, он будет печатать правда. Идентификаторы s1 и s3 также схожи, поэтому он выведет true.
HashCode используется в хешировании, чтобы решить, к какой группе следует относить объект. Группа объектов может использовать один и тот же хэш-код. Правильная функция хеширования может равномерно распределять объекты по различным группам..
Правильный hashCode может иметь следующие свойства. Предположим, что есть два объекта как obj1 и obj2. Если obj1.equals (obj2) имеет значение true, то obj1.hashCode () равен obj2.hashCode (). Если obj1.equals (obj2) имеет значение false, необязательно, чтобы obj1.hashCode () не был равен obj2.hashCode (). Два неравных объекта могут также иметь одинаковый hashCode.
Рисунок 03: Студенческий класс с равными и hashCode
Рисунок 04: Основная программа
Класс Student содержит методы equals и hashCode. Метод equals в классе Student получит объект. Если объект нулевой, он вернет false. Если классы объектов не совпадают, он вернет false. Значения идентификатора проверяются в обоих объектах. Если они похожи, он вернет истину. Иначе он вернет ложь.
В основной программе создаются объекты s1 и s2. При вызове s1.equals (s2) возвращает true, потому что метод equals переопределен, и он проверяет значения id двух объектов. Даже если они ссылаются на два объекта, ответ верен, поскольку значения идентификаторов s1 и s2 одинаковы. Поскольку s1.equals (s2) имеет значение true, хеш-код s1 и s2 должен быть равен. Печать хэш-кода s1 и s2 дает одинаковое значение. Метод hashCode может использоваться с коллекциями, такими как HashMap.
равно против хэш-кода в Java | |
equals - это метод в Java, который действует подобно оператору ==, который предназначен для проверки идентичности объекта, а не равенства объектов. | hashCode - это метод, с помощью которого класс неявно или явно разбивает данные, хранящиеся в экземпляре класса, на одно хеш-значение. |
использование | |
Метод equals используется для сравнения двух объектов. | Метод используется в хешировании, чтобы решить, в какую группу следует поместить объект. |
Разница между equals и hashCode в Java заключается в том, что equals используется для сравнения двух объектов, а hashCode используется для хеширования, чтобы решить, к какой группе следует относить объект..
1. «Java HashCode ().» Википедия, Фонд Викимедиа, 17 февраля 2018 г. Доступно здесь
2. Гарольд, Эллиот Расти. «Метод Equals ()». Метод Equals (), 2 ноября 2001 г. Доступен здесь