Razlika između jednakog i hash koda u Javi

Sadržaj:

Razlika između jednakog i hash koda u Javi
Razlika između jednakog i hash koda u Javi

Video: Razlika između jednakog i hash koda u Javi

Video: Razlika između jednakog i hash koda u Javi
Video: Supercritical fluids, a state between Liquid and Gas 2024, Juli
Anonim

Ključna razlika – jednako u odnosu na hashCode u Javi

Jednako je slično operatoru==, koji treba da testira identitet objekta, a ne jednakost objekta. HashCode je metoda pomoću koje klasa implicitno ili eksplicitno razlaže podatke pohranjene u instanci klase u jednu heš vrijednost, koja je 32-bitni cijeli broj s predznakom. Ključna razlika između jednakosti i hashCode-a u Javi je u tome što se jednaki koristi za poređenje dva objekta, dok se hashCode koristi u heširanju da bi se odlučilo u koju grupu bi objekat trebao biti kategoriziran.

Šta je jednako u Javi?

Metoda jednakosti se koristi za poređenje dva objekta. Standardna metoda jednaka definirana je u klasi objekata. Ta implementacija je slična operatoru==. Dvije reference objekta su jednake samo ako upućuju na isti objekt. Moguće je nadjačati metod jednakosti.

Razlika između jednakog i hash koda u Javi
Razlika između jednakog i hash koda u Javi

Slika 01: Java program sa jednakima

Izjava System.out.println(s1.equals(s2)) će dati odgovor netačan jer se s1 i s2 odnose na dva različita objekta. Bilo je slično izjavi, System.out.println(s1==s2);

Izjava System.out.println(s1.equals(s3)) će dati odgovor istinit jer se s1 i s3 odnose na isti objekat. Bilo je slično izjavi, System.out.println(s1==s3);

Ne postoji metoda jednakih u klasi Student. Stoga se poziva jednako u klasi Object. Tačno se prikazuje samo ako referenca objekta pokazuje na isti objekt.

Razlika između jednakog i hash koda na Javi_slika 02
Razlika između jednakog i hash koda na Javi_slika 02

Slika 02: Java program sa nadjačanim jednako

Prema gore navedenom programu, metoda jednakosti je poništena. Objekt se prosljeđuje metodi, a tip se prebacuje na Student. Zatim se provjeravaju id vrijednosti. Ako su id vrijednosti slične, vratit će true. Ako nije, vratit će se false. ID-ovi s1 i s2 su slični. Dakle, štampaće tačno. ID-ovi s1 i s3 su također slični, tako da će ispisati true.

Šta je hashCode u Javi?

HashCode se koristi u heširanju kako bi se odlučilo u koju grupu treba biti kategoriziran objekt. Grupa objekata može dijeliti isti hashCode. Ispravna funkcija heširanja može ravnomjerno rasporediti objekte u različite grupe.

Ispravan hashCode može imati svojstva kako slijedi. Pretpostavimo da postoje dva objekta kao obj1 i obj2. Ako je obj1.equals(obj2) istina, tada je obj1.hashCode() jednak obj2.hashCode(). Ako je obj1.equals(obj2) netačan, nije neophodno da obj1.hashCode() nije jednak obj2.hashCode(). Dva nejednaka objekta mogu također imati isti hashCode.

Razlika između jednakog i hash koda na Javi_slika 03
Razlika između jednakog i hash koda na Javi_slika 03

Slika 03: Razred učenika sa jednakima i hashCode

Ključna razlika između jednakog i hash koda u Javi
Ključna razlika između jednakog i hash koda u Javi

Slika 04: Glavni program

Klasa Student sadrži metode equals i hashCode. Metoda equals u klasi Student će dobiti objekat. Ako je objekt null, vratit će false. Ako klase objekata nisu iste, vratit će se false. Vrijednosti id-a se provjeravaju u oba objekta. Ako su slični, vratit će se true. Inače će vratiti false.

U glavnom programu kreiraju se objekti s1 i s2. Prilikom pozivanja s1.equals(s2) će dati true jer je metoda equals nadjačana i provjerava id vrijednosti dva objekta. Iako se odnose na dva objekta, odgovor je tačan jer su id vrijednosti s1 i s2 iste. Kako je s1.equals(s2) istinit, hashCode za s1 i s2 bi trebao biti jednak. Ispis hashCode-a s1 i s2 daje istu vrijednost. Metoda hashCode se može koristiti sa kolekcijama kao što je HashMap.

Koja je razlika između jednakosti i hash koda u Javi?

jednako vs hashCode u Javi

equals je metoda u Javi koja djeluje slično operatoru==, koji je da testira identitet objekta, a ne jednakost objekta. hashCode je metoda pomoću koje klasa implicitno ili eksplicitno razlaže podatke pohranjene u instanci klase u jednu hash vrijednost.
Upotreba
Metoda jednako se koristi za poređenje dva objekta. Metoda se koristi u heširanju da bi se odlučilo u koju grupu treba staviti objekat.

Sažetak – jednako u odnosu na hashCode u Javi

Razlika u jednakosti i hashCode-u u Javi je u tome što se jednaki koriste za poređenje dva objekta, dok se hashCode koristi u heširanju da bi se odlučilo u koju grupu bi objekat trebao biti kategoriziran.

Preporučuje se: