Разлика между equals и hashCode в Java

Съдържание:

Разлика между equals и hashCode в Java
Разлика между equals и hashCode в Java

Видео: Разлика между equals и hashCode в Java

Видео: Разлика между equals и hashCode в Java
Видео: Java. Методы equals и hashCode. 2024, Юли
Anonim

Ключова разлика – равно спрямо hashCode в Java

Equals е подобен на оператора==, който трябва да тества идентичността на обекта, а не равенството на обекта. HashCode е метод, чрез който клас косвено или изрично разбива данните, съхранени в екземпляр на класа, в една хеш стойност, която е 32-битово цяло число със знак. Ключовата разлика между equals и hashCode в Java е, че equals се използва за сравняване на два обекта, докато hashCode се използва при хеширане, за да се реши в коя група трябва да бъде категоризиран даден обект.

Какво е равно в Java?

Методът 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)) ще даде отговор true, защото s1 и s3 се отнасят за един и същ обект. Беше подобно на израза System.out.println(s1==s3);

Няма равен метод в класа Student. Следователно се извиква равенството в класа Object. True се показва само ако препратката към обекта сочи към същия обект.

Разлика между equals и hashCode в Java_Figure 02
Разлика между equals и hashCode в Java_Figure 02

Фигура 02: Програма на Java с Overridden е равно на

Съгласно горната програма методът equals се отменя. Обект се предава на метода и се преобразува от тип към Student. След това се проверяват стойностите на id. Ако стойностите на id са подобни, ще се върне true. Ако не, ще върне false. Идентификаторите на s1 и s2 са подобни. Така че ще се отпечата вярно. Идентификационните номера на s1 и s3 също са подобни, така че ще се отпечата true.

Какво е hashCode в Java?

HashCode се използва при хеширане, за да се реши в коя група трябва да бъде категоризиран даден обект. Група от обекти може да споделя един и същ хешкод. Правилната функция за хеширане може да разпредели равномерно обектите в различни групи.

Правилният хешкод може да има свойства, както следва. Да приемем, че има два обекта като obj1 и obj2. Ако obj1.equals(obj2) е true, тогава obj1.hashCode() е равно на obj2.hashCode(). Ако obj1.equals(obj2) е невярно, не е необходимо obj1.hashCode() да не е равно на obj2.hashCode(). Двата неравни обекта може също да имат един и същ хешкод.

Разлика между equals и hashCode в Java_Figure 03
Разлика между equals и hashCode в Java_Figure 03

Фигура 03: Студентски клас с равенства и hashCode

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

Фигура 04: Основна програма

Класът Student съдържа методите equals и hashCode. Методът equals в класа Student ще получи обект. Ако обектът е нула, той ще върне false. Ако класовете на обектите не са еднакви, ще върне false. Стойностите на id се проверяват и в двата обекта. Ако са подобни, ще се върне true. В противен случай ще върне false.

В основната програма се създават обекти s1 и s2. При извикване на s1.equals(s2) ще даде true, защото методът equals е заменен и той проверява стойностите на id на двата обекта. Въпреки че се отнасят до два обекта, отговорът е верен, защото стойностите на id на s1 и s2 са еднакви. Тъй като s1.equals(s2) е вярно, хеш-кодът на s1 и s2 трябва да е равен. Отпечатването на hashCode на s1 и s2 дава същата стойност. Методът hashCode може да се използва с колекции като HashMap.

Каква е разликата между equals и hashCode в Java?

equals срещу hashCode в Java

equals е метод в Java, който действа подобно на оператора==, който трябва да тества идентичността на обекта, а не равенството на обекта. hashCode е метод, чрез който клас имплицитно или изрично разделя данните, съхранени в екземпляр на класа, в една хеш стойност.
Използване
Методът equals се използва за сравняване на два обекта. Методът се използва при хеширане, за да се реши в коя група да бъде поставен даден обект.

Резюме – равно на hashCode в Java

Разликата в equals и hashCode в Java е, че equals се използва за сравняване на два обекта, докато hashCode се използва при хеширане, за да се реши в коя група трябва да бъде категоризиран даден обект.

Препоръчано: