Middle
Zašto hashCode() različitih objekata može vraćati iste vrednosti?
sobes.tech АИ
Одговор од АИ
Зато што је опсег могућих вредности хеш-кода (int) много мањи од опсега могућих вредности садржаја објеката. У ствари, ова својство било које хеш-функције је компресија улазних података у фиксни или мањи опсег вредности. Колизије хеш-кодова (када различити објекти имају исти хеш-код) су неизбежне.
За правилан рад колекција заснованих на хеширању (нпр. HashMap, HashSet) потребно је следеће правило:
- Ако Objects.equals(a, b), онда a.hashCode() == b.hashCode().
- Ако !Objects.equals(a, b), онда a.hashCode() може бити једнак или различит од b.hashCode().
Колекције користе hashCode() за брзо одређивање потенцијалног "кутије" за постављање или претрагу елемента, а затим користе equals() за прецизну проверу унутар тог кутије.