Junior — Middle
Je možné, aby dva objekty, které nejsou podle equals stejné, měly stejnou hodnotu hashCode?
sobes.tech AI
Odpověď od AI
Ano, je to možné. V Javě smlouva metod equals() a hashCode() vyžaduje, že pokud jsou dva objekty podle equals() stejné, musí mít stejný hashCode(). Ale opak není povinný: dva objekty se stejným hashCode() nemusí být podle equals() stejné.
To je způsobeno tím, že hashCode() vrací celočíselnou hodnotu pevné velikosti, a různé objekty mohou mít kolize — stejný hash.
Například v kolekcích typu HashMap nebo HashSet se nejdříve porovnává hashCode(), a poté se používá equals() k přesnému určení rovnosti objektů.