Middle
Proč může hashCode() různých objektů vracet stejné hodnoty?
sobes.tech AI
Odpověď od AI
Protože rozsah možných hodnot hash kódu (int) je mnohem menší než rozsah možných hodnot obsahu objektů. Ve skutečnosti je vlastností jakékoli hashovací funkce, že zkracuje vstupní data na pevný nebo menší rozsah hodnot. Kolize hash kódů (když různé objekty mají stejný hash kód) jsou nevyhnutelné.
Pro správnou funkci kolekcí založených na hashování (například HashMap, HashSet) je nutné dodržovat následující pravidla:
- Pokud Objects.equals(a, b), pak a.hashCode() == b.hashCode().
- Pokud !Objects.equals(a, b), pak a.hashCode() může být rovno nebo různé od b.hashCode().
Kolekce používají hashCode() k rychlému určení potenciálního "kbelíku" pro umístění nebo hledání prvku, a poté používají equals() pro přesnou kontrolu uvnitř tohoto kbelíku.