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.
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.
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.
Figur 03: Elevklasse med lig og hashCode
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.