Равнището е подобно на оператора ==, който е за тестване за идентичност на обекта, а не за равенство на обекта. HashCode е метод, при който клас имплицитно или изрично разгражда данните, съхранявани в екземпляр от класа, в едно хеш-стойност, което е 32-битово подписано цяло число. Най- ключова разлика между равни и hashCode в Ява е това equals се използва за сравняване на два обекта, докато hashCode се използва при хеширане, за да се реши в коя група даден обект да бъде категоризиран.
1. Преглед и ключова разлика
2. Какво е равно на Java
3. Какво е hashCode в Java
4. Паралелно сравнение - равно на hashCode в Java в таблична форма
5. Резюме
Методът равен се използва за сравняване на два обекта. Методът равен по подразбиране е дефиниран в обектния клас. Тази реализация е подобна на оператора ==. Двете референции на обект са равни само ако сочат към един и същ обект. Възможно е да се отмени методът равен.
Фигура 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);
В клас Студент няма метод на равенство. Следователно, равните в клас Object се наричат. True се показва само ако референцията на обекта сочи към същия обект.
Фигура 02: Програма на Java с надминат равен
Съгласно горната програма, методът на равенството е отменен. Обектът се предава на метода и той се предава на Student. След това се проверяват стойностите на id. Ако стойностите на id са сходни, ще се върне вярно. Ако не, ще се върне невярно. Кодовете на s1 и s2 са подобни. Така че, тя ще отпечата вярно. Идентификационните номера на s1 и s3 също са сходни, така че ще отпечата истината.
ХешКодът се използва в хеширането, за да се реши в коя група трябва да бъде категоризиран обектът. Група обекти могат да споделят един и същ хеш-код. Правилната функция на хеширане може равномерно да разпределя обекти в различни групи.
Правилният hashCode може да има свойства, както следва. Да приемем, че има два обекта като obj1 и obj2. Ако obj1.equals (obj2) е вярно, тогава obj1.hashCode () е равно на obj2.hashCode (). Ако obj1.equals (obj2) е невярно, не е необходимо obj1.hashCode () да не е равно на obj2.hashCode (). Двата неравен обект може също да имат един и същ хеш-код.
Фигура 03: Учебен клас с равни и хеш-код
Фигура 04: Основна програма
Класът Student съдържа методите, равняващи се и hashCode. Методът равен в клас Студент ще получи обект. Ако обектът е нулев, той ще върне невярно. Ако класовете на обектите не са еднакви, то ще се върне невярно. Стойностите на id се проверяват и в двата обекта. Ако те са подобни, ще се върне вярно. Иначе ще върне невярно.
В основната програма се създават обекти s1 и s2. Когато се обаждате s1.equals (s2) ще даде true, тъй като методът equals е отменен и той проверява идентификационните стойности на двата обекта. Въпреки че се отнасят до два обекта, отговорът е верен, защото стойностите на id на s1 и s2 са еднакви. Тъй като s1.equals (s2) е вярно, hashCode на s1 и s2 трябва да бъде равен. Отпечатването на hashCode на s1 и s2 дава една и съща стойност. Методът hashCode може да се използва с колекции като HashMap.
равен срещу hashCode в Java | |
equals е метод в Java, който действа подобно на оператора ==, който е за тестване за идентичност на обекта, а не за равенство на обекта. | hashCode е метод, при който клас имплицитно или изрично разгражда данните, съхранявани в екземпляр от класа, до една хеш стойност. |
употреба | |
Методът равен се използва за сравняване на два обекта. | Методът се използва при хеширане, за да се реши в коя група да бъде поставен обектът. |
Разликата в equals и hashCode в Java е, че equals се използва за сравняване на два обекта, докато hashCode се използва при хеширане, за да се реши в коя група даден обект да бъде категоризиран.
1. „Java HashCode ().“ Уикипедия, Фондация Уикимедия, 17 февруари 2018 г. Достъпно тук
2.Харолд, Елиът Ръсти. „Методът на равните ().“ Методът на равенството (), 2 ноември 2001. Достъпно тук