Junior — Middle
Ποιους τρόπους υλοποίησης της διεπαφής Map γνωρίζεις σε Kotlin και πώς διαφέρουν;
sobes.tech AI
Απάντηση από AI
Στην Kotlin, η διεπαφή Map υλοποιείται με διάφορους τρόπους, που διαφέρουν ως προς τη μεταβλητότητα και την εσωτερική υλοποίηση:
- Map (μόνο ανάγνωση) — διεπαφή για αμετάβλητες απεικονίσεις. Οι υλοποιήσεις της δεν επιτρέπουν την τροποποίηση του περιεχομένου. Παράδειγμα δημιουργίας:
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2)
- MutableMap — επεκτείνει το Map και επιτρέπει την τροποποίηση του περιεχομένου (προσθήκη, διαγραφή στοιχείων). Παράδειγμα:
val mutableMap: MutableMap<String, Int> = mutableMapOf("one" to 1)
mutableMap["two"] = 2
-
HashMap — κλάση που υλοποιεί το MutableMap, βασίζεται σε πίνακα κατακερματισμού. Παρέχει γρήγορη πρόσβαση μέσω κλειδιού.
-
LinkedHashMap — κληρονομεί από το HashMap, διατηρεί τη σειρά εισαγωγής των στοιχείων.
-
SortedMap / TreeMap (μέσω Java) — απεικόνιση όπου τα κλειδιά είναι ταξινομημένα.
Διαφορές:
- Το Map μόνο για ανάγνωση δεν επιτρέπει την τροποποίηση των δεδομένων.
- Το MutableMap επιτρέπει την τροποποίηση.
- Το HashMap είναι ταχύτερο, αλλά δεν εγγυάται τη σειρά.
- Το LinkedHashMap διατηρεί τη σειρά εισαγωγής.
Στην Kotlin, οι τυπικές συναρτήσεις mapOf και mutableMapOf επιστρέφουν αντίστοιχα Map μόνο για ανάγνωση και MutableMap, που υλοποιούνται συνήθως μέσω του LinkedHashMap.