Middle
Miks erinevate objektide hashCode() võib tagastada samad väärtused?
sobes.tech AI
Vastus AI-lt
Kuna hash-koodi (int) võimalik väärtuste vahemik on palju väiksem kui objektide sisu võimalik väärtuste vahemik. Tegelikult on iga hash-funktsiooni omadus tihendada sisendandmed fikseeritud või väiksema väärtuste vahemikku. Hash-koodide kokkupõrked (kui erinevatel objektidel on sama hash-kood) on vältimatud.
Hash-põhiste kogude (näiteks HashMap, HashSet) õige toimimise jaoks tuleb järgida järgmisi reegleid:
- Kui Objects.equals(a, b), siis a.hashCode() == b.hashCode().
- Kui !Objects.equals(a, b), siis võib a.hashCode() olla võrdne või erinev b.hashCode().
Kogud kasutavad hashCode(), et kiiresti määrata potentsiaalne "ämber" elemendi paigutamiseks või otsimiseks, ning seejärel kasutavad equals() täpseks kontrollimiseks selles ämbris.