Difference Between equals og hashCode i Java

Innholdsfortegnelse:

Difference Between equals og hashCode i Java
Difference Between equals og hashCode i Java

Video: Difference Between equals og hashCode i Java

Video: Difference Between equals og hashCode i Java
Video: .equals() vs. == in Java - The Real Difference 2024, Juli
Anonim

Key Difference – lik vs hashCode i Java

The equals ligner på==-operatoren, som skal teste for objektidentitet i stedet for objektlikhet. HashCode er en metode der en klasse implisitt eller eksplisitt bryter ned dataene som er lagret i en forekomst av klassen til en enkelt hash-verdi, som er et 32-bits signert heltall. Hovedforskjellen mellom likes og hashCode i Java er at likes brukes til å sammenligne to objekter mens hashCode brukes i hashing for å bestemme hvilken gruppe et objekt skal kategoriseres i.

Hva er lik i Java?

Lik metoden brukes til å sammenligne to objekter. Standard lik metode er definert i objektklassen. Denne implementeringen ligner på==-operatøren. De to objektreferansene er like bare hvis de peker til samme objekt. Det er mulig å overstyre likhetsmetoden.

Forskjellen mellom likheter og hashCode i Java
Forskjellen mellom likheter og hashCode i Java

Figur 01: Java-program med likeverdige

Utsagnet System.out.println(s1.equals(s2)) vil gi svaret falsk fordi s1 og s2 refererer til to forskjellige objekter. Den lignet på setningen System.out.println(s1==s2);

Utsagnet System.out.println(s1.equals(s3)) vil gi svaret sant fordi s1 og s3 refererer til samme objekt. Det lignet på setningen System.out.println(s1==s3);

Det er ingen likhetsmetode i Studentklassen. Derfor kalles likhetene i Object-klassen. True vises bare hvis objektreferansen peker til det samme objektet.

Forskjellen mellom lik og hashCode i Java_Figure 02
Forskjellen mellom lik og hashCode i Java_Figure 02

Figur 02: Java-program med overstyrt lik

I henhold til programmet ovenfor, overstyres lik-metoden. Et objekt sendes til metoden, og det typecastes til Student. Deretter kontrolleres id-verdiene. Hvis id-verdiene er like, vil den returnere sann. Hvis ikke, vil den returnere falsk. IDene til s1 og s2 er like. Så det vil skrives ut sant. ID-ene til s1 og s3 er også like, så det vil skrives ut sant.

Hva er hashCode i Java?

Hashkoden brukes i hashing for å bestemme hvilken gruppe et objekt skal kategoriseres i. En gruppe objekter kan dele den samme hashkoden. En riktig hashing-funksjon kan fordele objekter jevnt i ulike grupper.

En riktig hashkode kan ha egenskaper som følger. Anta at det er to objekter som obj1 og obj2. Hvis obj1.equals(obj2) er sann, så er obj1.hashCode() lik obj2.hashCode(). Hvis obj1.equals(obj2) er falsk, er det ikke nødvendig at obj1.hashCode() ikke er lik obj2.hashCode(). De to ulike objektene kan også ha samme hashkode.

Forskjellen mellom lik og hashCode i Java_Figure 03
Forskjellen mellom lik og hashCode i Java_Figure 03

Figur 03: Elevklasse med likes og hashCode

Nøkkelforskjell mellom likes og hashCode i Java
Nøkkelforskjell mellom likes og hashCode i Java

Figur 04: Hovedprogram

Studentklassen inneholder metodene equals og hashCode. Lik metoden i Student-klassen vil motta et objekt. Hvis objektet er null, vil det returnere false. Hvis klassene til objektene ikke er de samme, vil den returnere false. ID-verdiene sjekkes i begge objektene. Hvis de er like, vil det returnere sant. Ellers vil den returnere falsk.

I hovedprogrammet opprettes objektene s1 og s2. Når du kaller s1.equals(s2) vil gi true fordi equals-metoden overstyres og den sjekker id-verdiene til de to objektene. Selv om de refererer til to objekter, er svaret sant fordi id-verdiene til s1 og s2 er de samme. Siden s1.equals(s2) er sann, bør hashkoden til s1 og s2 være lik. Å skrive ut hashkoden til s1 og s2 gir samme verdi. HashCode-metoden kan brukes med samlinger som HashMap.

Hva er forskjellen mellom likes og hashCode i Java?

equals vs hashCode i Java

equals er en metode i Java som fungerer på samme måte som==-operatoren, som er å teste for objektidentitet i stedet for objektlikhet. hashCode er en metode der en klasse implisitt eller eksplisitt bryter ned dataene som er lagret i en forekomst av klassen til en enkelt hash-verdi.
Bruk
Metoden er lik brukes til å sammenligne to objekter. Metoden brukes i hashing for å bestemme hvilken gruppe et objekt skal plasseres i.

Summary – lik vs hashCode i Java

Forskjellen på likes og hashCode i Java er at likes brukes til å sammenligne to objekter mens hashCode brukes i hashing for å bestemme hvilken gruppe et objekt skal kategoriseres i.

Anbefalt: