Ключова разлика - равно на hashCode в Java
Equals е подобен на оператора ==, който трябва да тества идентичност на обекта, а не равенство на обекта. HashCode е метод, чрез който клас имплицитно или изрично разбива данните, съхранявани в екземпляр на класа, в една хеш стойност, която е 32-битово подписано цяло число. Ключовата разлика между equals и hashCode в Java е, че equals се използва за сравняване на два обекта, докато hashCode се използва при хеширане, за да се реши в коя група даден обект да бъде категоризиран.
СЪДЪРЖАНИЕ
1. Общ преглед и ключова разлика
2. Какво е равно в Java
3. Какво е hashCode в Java
4. Успоредно сравнение - равно на hashCode в Java в таблична форма
5. Обобщение
Какво е равно в Java?
Методът equals се използва за сравняване на два обекта. Методът по подразбиране е равен е дефиниран в обектния клас. Това изпълнение е подобно на оператора ==. Двете препратки към обекти са равни, само ако сочат към един и същ обект. Възможно е да се замени методът equals.
Фигура 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. Истина се показва само ако препратката към обекта сочи към същия обект.
Фигура 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.
Фигура 03: Студентски клас с равни и hashCode
Фигура 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 се използва при хеширане, за да се реши в коя група даден обект да бъде категоризиран.