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

СЪДЪРЖАНИЕ

1. Общ преглед и ключова разлика

2. Какво е равно в Java

3. Какво е hashCode в Java

4. Успоредно сравнение - равно на hashCode в Java в таблична форма

5. Обобщение

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

Методът equals се използва за сравняване на два обекта. Методът по подразбиране е равен е дефиниран в обектния клас. Това изпълнение е подобно на оператора ==. Двете препратки към обекти са равни, само ако сочат към един и същ обект. Възможно е да се замени методът equals.

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

Фигура 01: Програма Java с равни

Изявлението System.out.println (s1.equals (s2)) ще даде отговора невярно, тъй като s1 и s2 се отнасят до два различни обекта. Това беше подобно на изявлението System.out.println (s1 == s2);

Изявлението System.out.println (s1.equals (s3)) ще даде отговора вярно, защото s1 и s3 се отнасят до един и същ обект. Това беше подобно на изявлението System.out.println (s1 == s3);

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

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

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

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

Какво е hashCode в Java?

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

Правилният hashCode може да има свойства, както следва. Да приемем, че има два обекта като obj1 и obj2. Ако obj1.equals (obj2) е вярно, тогава obj1.hashCode () е равно на obj2.hashCode (). Ако obj1.equals (obj2) е невярно, не е необходимо obj1.hashCode () да не е равно на obj2.hashCode (). Двата неравномерни обекта също могат да имат един и същ 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 се проверяват и в двата обекта. Ако те са подобни, това ще се върне вярно. В противен случай ще се върне false.

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

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

Различна статия Средна преди таблица

е равно на hashCode в Java

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

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

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

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