Diferenca kryesore – është e barabartë me kodin hash në Java
E barabartë është e ngjashme me operatorin==, i cili do të testojë identitetin e objektit dhe jo barazinë e objektit. HashCode është një metodë me të cilën një klasë në mënyrë implicite ose eksplicite zbërthen të dhënat e ruajtura në një shembull të klasës në një vlerë të vetme hash, e cila është një numër i plotë i nënshkruar 32 bit. Dallimi kryesor midis barabartë dhe hashCode në Java është se e barabartë përdoret për të krahasuar dy objekte ndërsa hashCode përdoret në hashing për të vendosur se në cilin grup duhet të kategorizohet një objekt.
Çfarë është e barabartë në Java?
Metoda e barabartë përdoret për të krahasuar dy objekte. Metoda e paracaktuar e barabartë është përcaktuar në klasën e objektit. Ky zbatim është i ngjashëm me operatorin==. Dy referencat e objekteve janë të barabarta vetëm nëse janë të drejtuara drejt të njëjtit objekt. Është e mundur të anashkalohet metoda e barabartë.
Figura 01: Program Java me të barabartë me
Pohimi System.out.println(s1.equals(s2)) do të japë përgjigjen false sepse s1 dhe s2 u referohen dy objekteve të ndryshme. Ishte e ngjashme me deklaratën, System.out.println(s1==s2);
Pohimi System.out.println(s1.equals(s3)) do të japë përgjigjen e vërtetë sepse s1 dhe s3 i referohen të njëjtit objekt. Ishte e ngjashme me deklaratën, System.out.println(s1==s3);
Nuk ka metodë të barabartë në klasën Student. Prandaj, thirret barazimet në klasën Object. True shfaqet vetëm nëse referenca e objektit po tregon të njëjtin objekt.
Figura 02: Programi Java me anashkalim është i barabartë me
Sipas programit të mësipërm, metoda e barabartë anashkalohet. Një objekt i kalohet metodës dhe i jepet tipit Student. Më pas, kontrollohen vlerat e ID-së. Nëse vlerat e ID-së janë të ngjashme, ajo do të kthehet e vërtetë. Nëse jo, do të kthehet false. ID-të e s1 dhe s2 janë të ngjashme. Pra, do të printohet e vërtetë. ID-të e s1 dhe s3 janë gjithashtu të ngjashme, kështu që do të printohet e vërtetë.
Çfarë është hashCode në Java?
HashCode përdoret në hashing për të vendosur se në cilin grup duhet të kategorizohet një objekt. Një grup objektesh mund të ndajnë të njëjtin kod hash. Një funksion i saktë hashing mund të shpërndajë në mënyrë të barabartë objektet në grupe të ndryshme.
Një kod hash i saktë mund të ketë vetitë si më poshtë. Supozoni se ka dy objekte si obj1 dhe obj2. Nëse obj1.equals(obj2) është e vërtetë, atëherë obj1.hashCode() është e barabartë me obj2.hashCode(). Nëse obj1.equals(obj2) është false, nuk është e nevojshme që obj1.hashCode() të mos jetë e barabartë me obj2.hashCode(). Dy objektet e pabarabarta mund të kenë gjithashtu të njëjtin kod hash.
Figura 03: Klasa studentore me barazime dhe hashCode
Figura 04: Programi kryesor
Klasa Student përmban metodat e barabartë dhe hashCode. Metoda e barabartë në klasën Student do të marrë një objekt. Nëse objekti është i pavlefshëm, ai do të kthehet false. Nëse klasat e objekteve nuk janë të njëjta, do të kthehet false. Vlerat e id kontrollohen në të dy objektet. Nëse ato janë të ngjashme, do të kthehet e vërtetë. Përndryshe do të kthehet false.
Në programin kryesor krijohen objektet s1 dhe s2. Kur thirret s1.equals(s2) do të japë true sepse metoda e barabartë është anashkaluar dhe kontrollon vlerat id të dy objekteve. Edhe pse u referohen dy objekteve, përgjigja është e vërtetë sepse vlerat e id të s1 dhe s2 janë të njëjta. Meqenëse s1.equals(s2) është e vërtetë, hashCode i s1 dhe s2 duhet të jetë i barabartë. Printimi i kodit hash të s1 dhe s2 jep të njëjtën vlerë. Metoda hashCode mund të përdoret me Koleksione të tilla si HashMap.
Cili është ndryshimi midis barazimeve dhe kodit hash në Java?
e barabartë me kodin hash në Java |
|
equals është një metodë në Java që vepron ngjashëm me operatorin==, i cili do të testojë identitetin e objektit dhe jo barazinë e objektit. | hashCode është një metodë me të cilën një klasë zbërthen në mënyrë implicite ose eksplicite të dhënat e ruajtura në një shembull të klasës në një vlerë të vetme hash. |
Përdorimi | |
Metoda e barabartë përdoret për të krahasuar dy objekte. | Metoda përdoret në hash për të vendosur se në cilin grup duhet të vendoset një objekt. |
Përmbledhje – është e barabartë me kodin hash në Java
Dallimi në barazimet dhe hashCode në Java është se e barabartë përdoret për të krahasuar dy objekte ndërsa hashCode përdoret në hashing për të vendosur se në cilin grup duhet të kategorizohet një objekt.