Junior — Middle
Μπορείτε να εξηγήσετε τη δομή και τον μηχανισμό λειτουργίας του πίνακα κατακερματισμού στη Java;
sobes.tech AI
Απάντηση από AI
Ένας πίνακας κατακερματισμού στην Java (π.χ., HashMap) είναι μια δομή δεδομένων που αποθηκεύει ζεύγη κλειδιού-τιμής και παρέχει γρήγορη πρόσβαση μέσω του κλειδιού.
Εσωτερική δομή:
- Η βάση είναι ένας πίνακας κάδων (καλάθια).
- Κάθε κάδος περιέχει είτε
null, είτε μια συνδεδεμένη λίστα (ή ένα δέντρο, αν υπάρχουν πολλά στοιχεία) στοιχείων με τον ίδιο κωδικό κατακερματισμού modulo το μέγεθος του πίνακα.
Μηχανισμός λειτουργίας:
- Κατά την προσθήκη ενός στοιχείου, υπολογίζεται ο κωδικός κατακερματισμού του κλειδιού και καθορίζεται η δείκτης του κάδου.
- Αν ο κάδος είναι άδειος, το στοιχείο τοποθετείται εκεί.
- Αν ο κάδος είναι κατειλημμένος, γίνεται αναζήτηση στη συνδεδεμένη λίστα (ή δέντρο) για να διαπιστωθεί αν το κλειδί ήδη υπάρχει:
- Αν βρεθεί το κλειδί, η τιμή ενημερώνεται.
- Αν όχι, το στοιχείο προστίθεται στη λίστα.
- Όταν φτάσει ένα ορισμένο όριο πληρότητας, γίνεται επέκταση του πίνακα (rehash) για να διατηρηθεί η απόδοση.
Αυτή η προσέγγιση διασφαλίζει μια μέση πολυπλοκότητα των λειτουργιών εισαγωγής, αναζήτησης και διαγραφής κοντά στο O(1).
Παράδειγμα χρήσης:
Map<String, Integer> map = new HashMap<>();
map.put("key1", 100);
Integer value = map.get("key1"); // γρήγορη πρόσβαση μέσω του κλειδιού