Junior — Middle
Koje posledice nastaju ako dva objekta imaju isti hash kod?
sobes.tech АИ
Одговор од АИ
Ako dva objekta imaju isti hash kod, to se naziva kolizija heševa. U Javi je to normalno i očekivano, jer je hash kod int, a objekata može biti mnogo više. Posledice:
- Kolizije mogu smanjiti performanse hash struktura podataka (npr. HashMap ili HashSet), jer će objekti sa istim hash kodom biti smešteni u istu korpu (bucket), i za pretraživanje će biti potrebno poređenje objekata pomoću equals.
- Važno je da, pri istom hash kodu, metoda equals pravilno razlikuje objekte, u suprotnom podaci mogu biti prepisani ili izgubljeni.
Primer:
Map<MyObject, String> map = new HashMap<>();
// Ako MyObject redefiniše hashCode(), ali equals() ne uzima u obzir sva polja,
// mogu nastati greške pri radu sa kolekcijom.