Verskil tussen gelyke en hash-kode in Java

INHOUDSOPGAWE:

Verskil tussen gelyke en hash-kode in Java
Verskil tussen gelyke en hash-kode in Java

Video: Verskil tussen gelyke en hash-kode in Java

Video: Verskil tussen gelyke en hash-kode in Java
Video: mario (more comfortable) (C) 2024, Julie
Anonim

Sleutelverskil – gelyk aan hashCode in Java

Die gelykes is soortgelyk aan die==-operateur, wat vir objekidentiteit eerder as objekgelykheid moet toets. Die hashCode is 'n metode waardeur 'n klas die data wat in 'n geval van die klas gestoor is implisiet of eksplisiet afbreek in 'n enkele hash-waarde, wat 'n 32-bis getekende heelgetal is. Die belangrikste verskil tussen gelyke en hashCode in Java is dat die gelyke gebruik word om twee voorwerpe te vergelyk, terwyl die hashCode in hashing gebruik word om te besluit in watter groep 'n voorwerp gekategoriseer moet word.

Wat is gelyk in Java?

Die gelyke-metode word gebruik om twee voorwerpe te vergelyk. Die standaard is gelyk aan metode word in die objekklas gedefinieer. Daardie implementering is soortgelyk aan die==operateur. Die twee voorwerpverwysings is slegs gelyk as hulle na dieselfde voorwerp wys. Dit is moontlik om die gelyke-metode te ignoreer.

Verskil tussen gelyke en hashCode in Java
Verskil tussen gelyke en hashCode in Java

Figuur 01: Java-program met gelykes

Die stelling System.out.println(s1.equals(s2)) sal die antwoord vals gee omdat s1 en s2 na twee verskillende objekte verwys. Dit was soortgelyk aan die stelling, System.out.println(s1==s2);

Die stelling System.out.println(s1.equals(s3)) sal die antwoord waar gee omdat s1 en s3 na dieselfde voorwerp verwys. Dit was soortgelyk aan die stelling, System.out.println(s1==s3);

Daar is geen gelyke-metode in die studenteklas nie. Daarom word die gelykes in die Object-klas genoem. True word slegs vertoon as die voorwerpverwysing na dieselfde voorwerp wys.

Verskil tussen gelyke en hashCode in Java_Figure 02
Verskil tussen gelyke en hashCode in Java_Figure 02

Figuur 02: Java-program met oorskryf gelyke

Volgens bogenoemde program word die gelyke-metode oorheers. 'n Voorwerp word na die metode oorgedra, en dit word na Student gegooi. Dan word die id-waardes nagegaan. As die id-waardes soortgelyk is, sal dit waar terugkeer. Indien nie, sal dit vals terugkeer. Die ID's van s1 en s2 is soortgelyk. So, dit sal waar druk. Die ID's van s1 en s3 is ook soortgelyk, so dit sal waar druk.

Wat is hashCode in Java?

Die hash-kode word gebruik in hashing om te besluit in watter groep 'n voorwerp gekategoriseer moet word. 'n Groep voorwerpe kan dieselfde hashCode deel. 'n Korrekte hashing-funksie kan voorwerpe eweredig in verskillende groepe versprei.

'n Korrekte hash-kode kan eienskappe soos volg hê. Aanvaar dat daar twee voorwerpe is as obj1 en obj2. As obj1.equals(obj2) waar is, dan is die obj1.hashCode() gelyk aan obj2.hashCode(). As obj1.equals(obj2) vals is, is dit nie nodig dat obj1.hashCode() nie gelyk is aan obj2.hashCode(). Die twee ongelyke voorwerpe kan ook dieselfde hash-kode hê.

Verskil tussen gelyke en hashCode in Java_Figure 03
Verskil tussen gelyke en hashCode in Java_Figure 03

Figuur 03: Studenteklas met gelykes en hashCode

Sleutelverskil tussen gelyke en hashCode in Java
Sleutelverskil tussen gelyke en hashCode in Java

Figuur 04: Hoofprogram

Die Studenteklas bevat die gelyke- en hashCode-metodes. Die gelyke-metode in die Studenteklas sal 'n voorwerp ontvang. As die voorwerp nul is, sal dit vals terugkeer. As die klasse van die voorwerpe nie dieselfde is nie, sal dit vals terugkeer. Die id-waardes word in beide voorwerpe nagegaan. As hulle soortgelyk is, sal dit waar terugkeer. Anders sal dit vals terugkeer.

In die hoofprogram word voorwerpe s1 en s2 geskep. Wanneer s1.equals(s2) roep sal waar gee omdat die equals-metode oorskryf word en dit kontroleer die id-waardes van die twee voorwerpe. Alhoewel hulle na twee voorwerpe verwys, is die antwoord waar omdat die id-waardes van s1 en s2 dieselfde is. Aangesien die s1.equals(s2) waar is, moet die hashCode van s1 en s2 gelyk wees. Die druk van die hashCode van s1 en s2 gee dieselfde waarde. Die hashCode-metode kan met versamelings soos HashMap gebruik word.

Wat is die verskil tussen gelyke en hash-kode in Java?

gelyk aan vs hash-kode in Java

equals is 'n metode in Java wat soortgelyk aan die==-operateur optree, wat is om te toets vir objekidentiteit eerder as objekgelykheid. hashCode is 'n metode waardeur 'n klas die data wat in 'n instansie van die klas gestoor is, implisiet of eksplisiet afbreek in 'n enkele hash-waarde.
Gebruik
Die metode is gelyk aan word gebruik om twee voorwerpe te vergelyk. Die metode word gebruik in hashing om te besluit in watter groep 'n voorwerp geplaas moet word.

Opsomming – gelyk aan hashCode in Java

Die verskil in gelyke en hashCode in Java is dat die gelyke gebruik word om twee voorwerpe te vergelyk terwyl die hashCode in hash gebruik word om te besluit in watter groep 'n voorwerp gekategoriseer moet word.

Aanbeveel: