Rozdíl mezi rovná a hashCode v Javě

Key Difference - rovná se vs hashCode in Jáva
 

Rovnost je podobná operátoru ==, který má testovat identitu objektu spíše než rovnost objektu. HashCode je metoda, pomocí které třída implicitně nebo explicitně rozdělí data uložená v instanci třídy na jedinou hašovací hodnotu, což je 32bitové celé číslo podepsané. klíčový rozdíl mezi rovná se a hashCode v Jáva je to equals se používá k porovnání dvou objektů, zatímco hashCode se používá při hašování k rozhodnutí, do které skupiny by měl být objekt zařazen.

OBSAH

1. Přehled a klíčový rozdíl
2. Co se v jazyce Java rovná
3. Co je hashCode v Javě
4. Porovnání bok po boku - rovná se hashCode v jazyce Java v tabulkové formě
5. Shrnutí

Co se rovná Java?

Metoda equals se používá k porovnání dvou objektů. Výchozí metoda rovná se definuje ve třídě objektů. Tato implementace je podobná operátoru ==. Dva odkazy na objekty jsou stejné, pouze pokud směřují ke stejnému objektu. Je možné přepsat metodu rovnosti.

Obrázek 01: Program Java s rovnými

Příkaz System.out.println (s1.equals (s2)) dá odpověď false, protože s1 a s2 odkazují na dva různé objekty. Bylo to podobné příkazu, System.out.println (s1 == s2);

Příkaz System.out.println (s1.equals (s3)) dá odpověď pravdivou, protože s1 a s3 odkazují na stejný objekt. Bylo to podobné příkazu, System.out.println (s1 == s3);

Ve třídě Student není žádná rovná metoda. Proto se nazývá rovná se ve třídě Object. True se zobrazí, pouze pokud odkaz na objekt ukazuje na stejný objekt.

Obrázek 02: Program Java s přepsáním se rovná

Podle výše uvedeného programu je metoda equals přepsána. Objekt je předán této metodě a je typ odlit do Studenta. Poté jsou zkontrolovány hodnoty id. Pokud jsou hodnoty id podobné, vrátí se true. Pokud ne, vrátí se false. ID s1 a s2 jsou podobné. Takže se vytiskne pravdivě. Ids s1 a s3 jsou také podobné, takže se bude tisknout true.

Co je hashCode v Javě?

Metoda hash se používá při hašování k rozhodnutí, do které skupiny by měl být objekt zařazen. Skupina objektů může sdílet stejný hashCode. Správná hashovací funkce může rovnoměrně distribuovat objekty do různých skupin.

Správný hashCode může mít následující vlastnosti. Předpokládejme, že existují dva objekty jako obj1 a obj2. Pokud je obj1.equals (obj2) pravdivý, pak obj1.hashCode () se rovná obj2.hashCode (). Pokud je obj1.equals (obj2) nepravdivý, není nutné, aby obj1.hashCode () se nerovnal obj2.hashCode (). Dva nerovné objekty mohou mít také stejný hashCode.

Obrázek 03: Studentská třída se rovná a hashCode

Obrázek 04: Hlavní program

Třída Student obsahuje metody equals a hashCode. Metoda equals ve třídě Student obdrží objekt. Pokud je objekt null, vrátí false. Pokud třídy objektů nejsou stejné, vrátí false. Hodnoty id jsou kontrolovány v obou objektech. Pokud jsou podobné, vrátí se pravda. Jinak se vrátí false.

V hlavním programu jsou vytvářeny objekty s1 a s2. Při volání s1.equals (s2) bude true, protože metoda equals je přepsána a zkontroluje id hodnoty obou objektů. I když odkazují na dva objekty, odpověď je pravdivá, protože hodnoty id s1 a s2 jsou stejné. Protože je s1.equals (s2) pravdivý, hashCode s1 a s2 by měl být stejný. Tisk hashCode s1 a s2 dává stejnou hodnotu. Metodu hashCode lze použít s kolekcemi, jako je HashMap.

Jaký je rozdíl mezi rovná a hashCode v Javě?

rovná se hashCode vs Java

equals je metoda v jazyce Java, která se chová podobně jako operátor ==, který má spíše testovat identitu objektu než rovnost objektu. hashCode je metoda, pomocí které třída implicitně nebo explicitně rozdělí data uložená v instanci třídy na jednu hash hodnotu.
 Používání
Metoda se rovná se používá k porovnání dvou objektů. Metoda se používá při hašování k rozhodnutí, do které skupiny má být objekt umístěn.

Shrnutí - rovná se vs hashCode in Jáva

Rozdíl v rovních a hashCode v Javě spočívá v tom, že se rovnice používají ke srovnání dvou objektů, zatímco hashCode se používá při hašování k rozhodnutí, do které skupiny by měl být objekt zařazen.

Odkaz:

1. „Java HashCode ().“ Wikipedia, Wikimedia Foundation, 17. února 2018. K dispozici zde 
2.Harold, Elliotte Rusty. „Metoda Equals ().“ Metoda Equals (), 2. listopadu 2001. K dispozici zde