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