Rozdíl Mezi Equals A HashCode V Javě

Obsah:

Rozdíl Mezi Equals A HashCode V Javě
Rozdíl Mezi Equals A HashCode V Javě

Video: Rozdíl Mezi Equals A HashCode V Javě

Video: Rozdíl Mezi Equals A HashCode V Javě
Video: Из-за чего ПОПУЛЯРНЫЙ ЧЕЛ В ШКОЛЕ стал НЕПОПУЛЯРНЫМ? | апвоут редит 2024, Listopad
Anonim

Klíčový rozdíl - rovná se hashCode v Javě

Equals je podobný operátoru ==, který má testovat identitu objektu, nikoli rovnost objektu. HashCode je metoda, kterou třída implicitně nebo explicitně rozebere data uložená v instanci třídy na jednu hodnotu hash, což je 32bitové celé číslo se znaménkem. Klíčový rozdíl mezi equals a hashCode v Javě spočívá v tom, že 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 kategorizován.

OBSAH

1. Přehled a klíčový rozdíl

2. Co se rovná v Javě

3. Co je hashCode v Javě

4. Porovnání vedle sebe - rovná se hashCode v Javě v tabulkové formě

5. Shrnutí

Co se rovná v Javě?

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

Rozdíl mezi equals a hashCode v Javě
Rozdíl mezi equals a hashCode v Javě

Obrázek 01: Program Java se rovná

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é jako prohlášení System.out.println (s1 == s2);

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

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

Rozdíl mezi equals a hashCode v Java Figure 02
Rozdíl mezi equals a hashCode v Java Figure 02

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

Podle výše uvedeného programu je metoda equals přepsána. Objekt je předán metodě a je typem vržen Studentovi. Poté se zkontrolují hodnoty id. Pokud jsou hodnoty id podobné, vrátí hodnotu true. Pokud ne, vrátí hodnotu false. ID s1 a s2 jsou podobná. Bude se tedy tisknout pravdivě. ID s1 a s3 jsou také podobná, takže se vytiskne pravdivě.

Co je hashCode v Javě?

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

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

Rozdíl mezi equals a hashCode v Java Figure 03
Rozdíl mezi equals a hashCode v Java Figure 03

Obrázek 03: Třída studentů s equals a hashCode

Klíčový rozdíl mezi equals a hashCode v Javě
Klíčový rozdíl mezi equals a hashCode v Javě

Obrázek 04: Hlavní program

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

V hlavním programu jsou vytvářeny objekty s1 a s2. Při volání s1.equals (s2) dá true, protože metoda equals je přepsána a kontroluje hodnoty id dvou objektů. I když odkazují na dva objekty, odpověď je pravdivá, protože hodnoty id s1 a s2 jsou stejné. Protože s1.equals (s2) je pravda, 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 equals a hashCode v Javě?

Rozdílný článek uprostřed před tabulkou

rovná se hashCode v Javě

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

Shrnutí - rovná se hashCode v Javě

Rozdíl v equals a hashCode v Javě spočívá v tom, že equals se používá k porovnání dvou objektů, zatímco hashCode se používá v hashování k rozhodnutí, do které skupiny by měl být objekt kategorizován.

Doporučená: