Middle
Miért adhat vissza a hashCode() különböző objektumok esetén ugyanazokat az értékeket?
sobes.tech MI
Válasz az MI-től
Mivel a hash-kód (int) lehetséges értéktartománya sokkal kisebb, mint az objektumok tartalmának lehetséges értéktartománya. Valójában ez a tulajdonsága minden hash-függvénynek, hogy bemeneti adatokat egy rögzített vagy kisebb értéktartományba tömörít. A hash-ütközések (amikor különböző objektumok ugyanazt a hash-kódot kapják) elkerülhetetlenek.
A hash-alapú gyűjtemények (például HashMap, HashSet) helyes működéséhez a következő szabályokat kell betartani:
- Ha Objects.equals(a, b), akkor a.hashCode() == b.hashCode().
- Ha !Objects.equals(a, b), akkor a.hashCode() lehet egyenlő vagy különböző b.hashCode() értékkel.
A gyűjtemények a hashCode()-ot használják arra, hogy gyorsan meghatározzák egy potenciális "kád" helyét az elem elhelyezéséhez vagy kereséséhez, majd a equals()-t használják a pontos ellenőrzéshez ezen a kádon belül.