Junior — Middle
Μπορείτε να εξηγήσετε πώς γίνεται η πρόσβαση σε ένα στοιχείο μέσα σε μια δομή HashMap;
sobes.tech AI
Απάντηση από AI
Στην Java, το HashMap υλοποιείται με βάση έναν πίνακα από buckets, καθένας από τους οποίους περιέχει μια συνδεδεμένη λίστα ή ένα δέντρο (από την Java 8) στοιχείων με τον ίδιο κωδικό hash.
Η πρόσβαση σε ένα στοιχείο γίνεται ως εξής:
- Υπολογίζεται ο κωδικός hash του κλειδιού με τη μέθοδο
hashCode(). - Ο κωδικός hash μετατρέπεται σε ένα δείκτη του πίνακα των buckets (συνήθως μέσω της λειτουργίας
hash & (capacity - 1)). - Στο επιλεγμένο bucket, αναζητείται το στοιχείο με το κλειδί ίσο με το ζητούμενο (σύγκριση μέσω
equals()). - Αν το στοιχείο βρεθεί, επιστρέφεται η συσχετισμένη τιμή.
Παράδειγμα:
HashMap<String, Integer> map = new HashMap<>();
map.put("key", 42);
Integer value = map.get("key"); // υπολογίζεται το hash, επιλέγεται το bucket, αναζητείται το στοιχείο
Έτσι, η πρόσβαση σε ένα στοιχείο αποτελείται από τον υπολογισμό του hash, την επιλογή του bucket και την αναζήτηση με το κλειδί μέσα στο bucket.