Sobes.tech
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.