Junior
Πώς πραγματοποιείται η αποθήκευση αντικειμένων στο HashMap;
sobes.tech AI
Απάντηση από AI
Τα αντικείμενα αποθηκεύονται ως ζεύγη "κλειδί-τιμή". Το HashMap χρησιμοποιεί έναν πίνακα "κάδων" (buckets). Κατά την προσθήκη ενός ζεύγους:
- Υπολογίζεται ο κωδικός κατακερματισμού (hash code) του κλειδιού με τη μέθοδο
hashCode(). - Χρησιμοποιώντας τον κωδικό κατακερματισμού, καθορίζεται η δείκτης της κάδας στον πίνακα.
- Σε αυτήν την κάδα τοποθετείται ένα ζεύγος
Entry(ή αντίστοιχο σε νεότερες εκδόσεις Java), που περιέχει το κλειδί, την τιμή και τον κωδικό κατακερματισμού. - Αν στην κάδα υπάρχουν ήδη αντικείμενα, σχηματίζουν μια συνδεδεμένη λίστα ή ένα δέντρο (σε περίπτωση πολλών συγκρούσεων).
Κατά την ανάκτηση ενός αντικειμένου με βάση το κλειδί:
- Υπολογίζεται ο κωδικός κατακερματισμού του κλειδιού.
- Καθορίζεται η δείκτης της κάδας.
- Μέσα στην κάδα, αναζητείται ένα αντικείμενο με κλειδί για το οποίο η
equals()επιστρέφειtrueκαι οι κωδικοί κατακερματισμού ταιριάζουν.
Τα κλειδιά πρέπει να είναι αμετάβλητα και να έχουν σωστά υλοποιημένες τις μεθόδους hashCode() και equals().