Forskellen Mellem Ligere Og HashCode I Java

Indholdsfortegnelse:

Forskellen Mellem Ligere Og HashCode I Java
Forskellen Mellem Ligere Og HashCode I Java

Video: Forskellen Mellem Ligere Og HashCode I Java

Video: Forskellen Mellem Ligere Og HashCode I Java
Video: Выпуск 22. hashCode() и equals() - самое главное. 2024, Kan
Anonim

Nøgleforskel - er lig med hashCode i Java

Lignerne svarer til operatoren ==, som skal teste for objektidentitet snarere end objektlighed. HashCode er en metode, hvormed en klasse implicit eller eksplicit nedbryder de data, der er gemt i en forekomst af klassen, i en enkelt hash-værdi, som er et 32-bit underskrevet heltal. Hovedforskellen mellem lig og hashCode i Java er, at ligene bruges til at sammenligne to objekter, mens hashCode bruges i hashing for at bestemme, hvilken gruppe et objekt skal kategoriseres i.

INDHOLD

1. Oversigt og nøgleforskel

2. Hvad er lig med Java

3. Hvad er hashCode i Java

4. Sammenligning side om side - er lig med hashCode i Java i tabelform

5. Resumé

Hvad er lig med Java?

Ligemetoden bruges til at sammenligne to objekter. Standardmetoden er lig med defineret i objektklassen. Denne implementering svarer til operatoren ==. De to objektreferencer er kun ens, hvis de peger på det samme objekt. Det er muligt at tilsidesætte ligemetoden.

Forskellen mellem ligere og hashCode i Java
Forskellen mellem ligere og hashCode i Java

Figur 01: Java-program med lig

Udtalelsen System.out.println (s1.equals (s2)) giver svaret falsk, fordi s1 og s2 henviser til to forskellige objekter. Det svarede til udsagnet, System.out.println (s1 == s2);

Udtalelsen System.out.println (s1.equals (s3)) giver svaret sandt, fordi s1 og s3 henviser til det samme objekt. Det lignede udsagnet, System.out.println (s1 == s3);

Der er ingen ligemetode i studenterklassen. Derfor kaldes ligene i objektklassen. Sandt vises kun, hvis objektreferencen peger på det samme objekt.

Forskellen mellem lig og hashCode i Java Figur 02
Forskellen mellem lig og hashCode i Java Figur 02

Figur 02: Java-program med tilsidesat lig

I henhold til ovennævnte program tilsidesættes ligemetoden. Et objekt sendes til metoden, og det typestøbes til Student. Derefter kontrolleres id-værdierne. Hvis id-værdierne er ens, vender det tilbage til sandt. Hvis ikke, returnerer den falsk. Id'erne for s1 og s2 er ens. Så det udskrives sandt. Id'erne for s1 og s3 er også ens, så det udskrives sandt.

Hvad er hashCode i Java?

HashCode bruges til hashing for at bestemme, hvilken gruppe et objekt skal kategoriseres i. En gruppe objekter kan dele den samme hashCode. En korrekt hashing-funktion kan jævnt distribuere objekter i forskellige grupper.

En korrekt hashCode kan have egenskaber som følger. Antag, at der er to objekter som obj1 og obj2. Hvis obj1.equals (obj2) er sandt, er obj1.hashCode () lig med obj2.hashCode (). Hvis obj1.equals (obj2) er falsk, er det ikke nødvendigt, at obj1.hashCode () ikke er lig med obj2.hashCode (). De to ulige objekter kan også have den samme hashCode.

Forskellen mellem lig og hashCode i Java Figur 03
Forskellen mellem lig og hashCode i Java Figur 03

Figur 03: Elevklasse med lig og hashCode

Nøgleforskel mellem lig og hashCode i Java
Nøgleforskel mellem lig og hashCode i Java

Figur 04: Hovedprogram

Studenterklassen indeholder ligemetoder og hashCode-metoder. Ligesom-metoden i klassen Student modtager et objekt. Hvis objektet er null, returneres det falsk. Hvis objekternes klasser ikke er de samme, returnerer den falsk. Id-værdierne kontrolleres i begge objekter. Hvis de er ens, vil det vende tilbage. Ellers vil det returnere falsk.

I hovedprogrammet oprettes objekter s1 og s2. Når du kalder s1.equals (s2) giver sandt, fordi ligemetoden er tilsidesat, og den kontrollerer id-værdierne for de to objekter. Selvom de henviser til to objekter, er svaret sandt, fordi id-værdierne for s1 og s2 er de samme. Da s1.equals (s2) er sandt, skal hashCode for s1 og s2 være ens. Udskrivning af hashCode på s1 og s2 giver den samme værdi. Metoden hashCode kan bruges med samlinger som HashMap.

Hvad er forskellen mellem lig og hashCode i Java?

Diff artikel midt foran bordet

svarer til vs hashCode i Java

er lig med er en metode i Java, der fungerer som operatøren ==, som er at teste for objektidentitet snarere end objektlighed. hashCode er en metode, hvormed en klasse implicit eller eksplicit nedbryder de data, der er gemt i en forekomst af klassen, i en enkelt hash-værdi.
Anvendelse
Metoden er lig med bruges til at sammenligne to objekter. Metoden bruges til hashing for at bestemme, hvilken gruppe et objekt skal placeres i.

Resumé - er lig med hashCode i Java

Forskellen i lig og hashCode i Java er, at ligene bruges til at sammenligne to objekter, mens hashCode bruges i hashing for at afgøre, hvilken gruppe et objekt skal kategoriseres i.

Anbefalet: