Junior — Middle
Εξηγήστε τι σημαίνει μια σύγκρουση κλειδιών στη δομή δεδομένων HashMap και πώς αντιμετωπίζει αυτό το ζήτημα.
sobes.tech AI
Απάντηση από AI
Συνάντηση κλειδιών (hash collision) σε HashMap συμβαίνει όταν δύο διαφορετικά κλειδιά δίνουν την ίδια τιμή δείκτη κατά τον υπολογισμό της συνάρτησης κατακερματισμού.
Πώς το αντιμετωπίζει το HashMap:
- Στην Java, το HashMap χρησιμοποιεί αλυσίδες (συνδεδεμένες λίστες ή ισορροπημένα δέντρα) για την αποθήκευση πολλών στοιχείων που πέφτουν στο ίδιο δοχείο.
- Όταν προστίθεται ένα νέο στοιχείο με ένα κλειδί, του οποίου το hash ταιριάζει με ένα υπάρχον, το νέο στοιχείο προστίθεται στην αλυσίδα αυτού του δοχείου.
- Κατά την αναζήτηση ενός κλειδιού, το HashMap διατρέχει τα στοιχεία στην αλυσίδα, συγκρίνοντας τα κλειδιά με τη μέθοδο equals() για να βρει το σωστό.
Από την Java 8 και μετά, αν η αλυσίδα γίνει πολύ μεγάλη, μετατρέπεται σε ισορροπημένο δέντρο (TreeNode), το οποίο βελτιώνει την απόδοση αναζήτησης από O(n) σε O(log n).