Razlika između equals i hashCode u Javi

Sadržaj:

Razlika između equals i hashCode u Javi
Razlika između equals i hashCode u Javi

Video: Razlika između equals i hashCode u Javi

Video: Razlika između equals i hashCode u Javi
Video: Damir Šićko Alić - Razlika između pravog i lažnog probuđenja 2024, Srpanj
Anonim

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

Equals je sličan operatoru==, koji treba testirati identitet objekta, a ne jednakost objekta. HashCode je metoda kojom klasa implicitno ili eksplicitno rastavlja podatke pohranjene u instanci klase u jednu hash vrijednost, koja je 32-bitni cijeli broj s predznakom. Ključna razlika između equals i hashCode u Javi je ta što se equals koristi za usporedbu dva objekta dok se hashCode koristi u raspršivanju kako bi se odlučilo u koju grupu objekt treba kategorizirati.

Što je jednako u Javi?

Equals metoda koristi se za usporedbu dva objekta. Zadana metoda equals definirana je u klasi objekta. Ta je implementacija slična operatoru==. Dvije reference objekta jednake su samo ako pokazuju na isti objekt. Moguće je nadjačati metodu jednako.

Razlika između equals i hashCode u Javi
Razlika između equals i hashCode u Javi

Slika 01: Java program s jednako

Izjava System.out.println(s1.equals(s2)) dat će odgovor false 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)) dat će odgovor true jer se s1 i s3 odnose na isti objekt. Bilo je slično izjavi, System.out.println(s1==s3);

Ne postoji metoda jednakosti u klasi Student. Stoga se poziva equals u klasi Object. True se prikazuje samo ako referenca objekta pokazuje na isti objekt.

Razlika između equals i hashCode u Javi_Slika 02
Razlika između equals i hashCode u Javi_Slika 02

Slika 02: Java program s nadjačanim jednako

Prema gornjem programu, metoda equals je nadjačana. Objekt se prosljeđuje metodi, a tip se pretvara u Studenta. Zatim se provjeravaju vrijednosti id-a. Ako su vrijednosti id-a slične, vratit će true. Ako nije, vratit će false. ID-ovi s1 i s2 su slični. Dakle, ispisat će istinito. ID-ovi s1 i s3 su također slični, tako da će ispisati true.

Što je hashCode u Javi?

HashCode se koristi u raspršivanju kako bi se odlučilo u koju grupu objekt treba kategorizirati. Skupina objekata može dijeliti isti hashCode. Ispravna funkcija raspršivanja može ravnomjerno rasporediti objekte u različite grupe.

Ispravan hashCode može imati sljedeća svojstva. Pretpostavimo da postoje dva objekta kao obj1 i obj2. Ako je obj1.equals(obj2) true, tada je obj1.hashCode() jednak obj2.hashCode(). Ako je obj1.equals(obj2) false, nije nužno da obj1.hashCode() nije jednak obj2.hashCode(). Dva nejednaka objekta također mogu imati isti hashCode.

Razlika između equals i hashCode u Javi_Slika 03
Razlika između equals i hashCode u Javi_Slika 03

Slika 03: Studentska klasa s equals i hashCode

Ključna razlika između equals i hashCode u Javi
Ključna razlika između equals i hashCode u Javi

Slika 04: Glavni program

Klasa Student sadrži metode equals i hashCode. Metoda equals u klasi Student primit će objekt. Ako je objekt null, vratit će false. Ako klase objekata nisu iste, vratit će false. Vrijednosti ID-a provjeravaju se 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 poziva s1.equals(s2) dat će true jer je metoda equals nadjačana i provjerava ID vrijednosti dvaju objekata. Iako se odnose na dva objekta, odgovor je točan jer su id vrijednosti s1 i s2 iste. Kako je s1.equals(s2) istinit, hashCode za s1 i s2 trebao bi biti jednak. Ispisom hashCodea s1 i s2 dobiva se ista vrijednost. Metoda hashCode može se koristiti s zbirkama kao što je HashMap.

Koja je razlika između equals i hashCode u Javi?

jednako naspram hashCode u Javi

equals je metoda u Javi koja djeluje slično operatoru==, a to je testiranje identiteta objekta, a ne jednakosti objekta. hashCode je metoda kojom klasa implicitno ili eksplicitno rastavlja podatke pohranjene u instanci klase u jednu hash vrijednost.
Upotreba
Metoda equals koristi se za usporedbu dva objekta. Metoda se koristi u hashiranju kako bi se odlučilo u koju grupu objekt treba smjestiti.

Sažetak – jednako u odnosu na hashCode u Javi

Razlika u equals i hashCode u Javi je u tome što se equals koristi za usporedbu dva objekta dok se hashCode koristi u raspršivanju kako bi se odlučilo u koju grupu objekt treba kategorizirati.

Preporučeni: