Nyckelskillnad - är lika med hashCode i Java
Likheterna liknar operatören ==, som är att testa för objektidentitet snarare än objektjämlikhet. HashCode är en metod genom vilken en klass implicit eller uttryckligen bryter ner data som lagrats i en instans av klassen till ett enda hash-värde, vilket är ett 32-bitars signerat heltal. Huvudskillnaden mellan lika och hashCode i Java är att lika används för att jämföra två objekt medan hashCode används i hashing för att bestämma vilken grupp ett objekt ska kategoriseras i.
INNEHÅLL
1. Översikt och nyckeldifferens
2. Vad är lika med Java
3. Vad är hashCode i Java
4. Jämförelse sida vid sida - lika med hashCode i Java i tabellform
5. Sammanfattning
Vad är lika med Java?
Metoden lika används för att jämföra två objekt. Standardmetoden lika med definieras i objektklassen. Den implementeringen liknar operatören ==. De två objektreferenserna är bara lika om de pekar på samma objekt. Det är möjligt att åsidosätta likhetsmetoden.
Figur 01: Java-program med lika
Uttalandet System.out.println (s1.equals (s2)) ger svaret falskt eftersom s1 och s2 hänvisar till två olika objekt. Det liknade påståendet System.out.println (s1 == s2);
Uttalandet System.out.println (s1.equals (s3)) kommer att ge svaret sant eftersom s1 och s3 hänvisar till samma objekt. Det liknade påståendet System.out.println (s1 == s3);
Det finns ingen lika metod i studentklassen. Därför kallas lika i Objektklassen. True visas endast om objektreferensen pekar på samma objekt.
Bild 02: Java-program med överstyrda lika
Enligt ovanstående program åsidosätts likhetsmetoden. Ett objekt skickas till metoden och det kastas till studenten. Därefter kontrolleras id-värdena. Om id-värdena liknar kommer det att återgå till sant. Om inte, kommer det att returnera falskt. ID: n för s1 och s2 är lika. Så det kommer att skriva ut sant. ID: n för s1 och s3 är också lika, så det kommer att skrivas ut.
Vad är hashCode i Java?
HashCode används i hashing för att bestämma till vilken grupp ett objekt ska kategoriseras. En grupp objekt kan dela samma hashCode. En korrekt hashing-funktion kan jämnt fördela objekt i olika grupper.
En korrekt hashCode kan ha egenskaper enligt följande. Antag att det finns två objekt som obj1 och obj2. Om obj1.equals (obj2) är sant är obj1.hashCode () lika med obj2.hashCode (). Om obj1.equals (obj2) är falskt är det inte nödvändigt att obj1.hashCode () inte är lika med obj2.hashCode (). De två ojämna objekten kan också ha samma hashCode.
Figur 03: Studentklass med lika och hashCode
Figur 04: Huvudprogram
Studentklassen innehåller lika och hashCode-metoder. Lika metoden i studentklassen får ett objekt. Om objektet är null returneras det falskt. Om objektklasserna inte är desamma kommer de att returnera falska. ID-värdena kontrolleras i båda objekten. Om de liknar kommer det att bli sant. Annars kommer det att returnera falskt.
I huvudprogrammet skapas objekt s1 och s2. När du ringer s1.equals (s2) ger true eftersom metoden equals åsidosätts och den kontrollerar id-värdena för de två objekten. Även om de hänvisar till två objekt är svaret sant eftersom id-värdena för s1 och s2 är desamma. Eftersom s1.equals (s2) är sant, bör hashCode för s1 och s2 vara lika. Att skriva ut hashCode för s1 och s2 ger samma värde. Metoden hashCode kan användas med samlingar som HashMap.
Vad är skillnaden mellan lika och hashCode i Java?
Skilja artikeln mitt före bordet
är lika med hashCode i Java |
|
lika är en metod i Java som fungerar liknande operatorn ==, som är att testa för objektidentitet snarare än objektjämlikhet. | hashCode är en metod genom vilken en klass implicit eller uttryckligen bryter ner data som lagrats i en instans av klassen till ett enda hash-värde. |
Användande | |
Metoden lika används för att jämföra två objekt. | Metoden används vid hashing för att bestämma vilken grupp ett objekt ska placeras i. |
Sammanfattning - är lika med hashCode i Java
Skillnaden i lika och hashCode i Java är att lika används för att jämföra två objekt medan hashCode används i hashing för att bestämma vilken grupp ett objekt ska kategoriseras i.