Разница между Equals и HashCode в Java

Оглавление:

Разница между Equals и HashCode в Java
Разница между Equals и HashCode в Java

Видео: Разница между Equals и HashCode в Java

Видео: Разница между Equals и HashCode в Java
Видео: "Ил-2 Штурмовик" нового поколения - "Битва за Сталинград" и "Битва за Москву" #14 2024, Май
Anonim

Ключевое отличие - равно 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.

Разница между equals и hashCode в Java
Разница между equals и hashCode в Java

Рисунок 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. Истина отображается, только если ссылка на объект указывает на тот же объект.

Разница между equals и hashCode в Java Figure 02
Разница между equals и hashCode в Java Figure 02

Рисунок 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 (). Два неравных объекта также могут иметь одинаковый хэш-код.

Разница между equals и hashCode в Java Figure 03
Разница между equals и hashCode в Java Figure 03

Рисунок 03: Студенческий класс с equals и hashCode

Ключевое различие между equals и hashCode в Java
Ключевое различие между equals и hashCode в Java

Рисунок 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 используется при хешировании, чтобы решить, в какую группу следует отнести объект.

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