Sobes.tech
Junior

Πώς πραγματοποιείται η αποθήκευση αντικειμένων στο HashMap;

sobes.tech AI

Απάντηση από AI

Τα αντικείμενα αποθηκεύονται ως ζεύγη "κλειδί-τιμή". Το HashMap χρησιμοποιεί έναν πίνακα "κάδων" (buckets). Κατά την προσθήκη ενός ζεύγους:

  1. Υπολογίζεται ο κωδικός κατακερματισμού (hash code) του κλειδιού με τη μέθοδο hashCode().
  2. Χρησιμοποιώντας τον κωδικό κατακερματισμού, καθορίζεται η δείκτης της κάδας στον πίνακα.
  3. Σε αυτήν την κάδα τοποθετείται ένα ζεύγος Entry (ή αντίστοιχο σε νεότερες εκδόσεις Java), που περιέχει το κλειδί, την τιμή και τον κωδικό κατακερματισμού.
  4. Αν στην κάδα υπάρχουν ήδη αντικείμενα, σχηματίζουν μια συνδεδεμένη λίστα ή ένα δέντρο (σε περίπτωση πολλών συγκρούσεων).

Κατά την ανάκτηση ενός αντικειμένου με βάση το κλειδί:

  1. Υπολογίζεται ο κωδικός κατακερματισμού του κλειδιού.
  2. Καθορίζεται η δείκτης της κάδας.
  3. Μέσα στην κάδα, αναζητείται ένα αντικείμενο με κλειδί για το οποίο η equals() επιστρέφει true και οι κωδικοί κατακερματισμού ταιριάζουν.

Τα κλειδιά πρέπει να είναι αμετάβλητα και να έχουν σωστά υλοποιημένες τις μεθόδους hashCode() και equals().