Sobes.tech
Junior — Middle

Ποιους τρόπους υλοποίησης της διεπαφής Map γνωρίζεις σε Kotlin και πώς διαφέρουν;

sobes.tech AI

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

Στην Kotlin, η διεπαφή Map υλοποιείται με διάφορους τρόπους, που διαφέρουν ως προς τη μεταβλητότητα και την εσωτερική υλοποίηση:

  1. Map (μόνο ανάγνωση) — διεπαφή για αμετάβλητες απεικονίσεις. Οι υλοποιήσεις της δεν επιτρέπουν την τροποποίηση του περιεχομένου. Παράδειγμα δημιουργίας:
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2)
  1. MutableMap — επεκτείνει το Map και επιτρέπει την τροποποίηση του περιεχομένου (προσθήκη, διαγραφή στοιχείων). Παράδειγμα:
val mutableMap: MutableMap<String, Int> = mutableMapOf("one" to 1)
mutableMap["two"] = 2
  1. HashMap — κλάση που υλοποιεί το MutableMap, βασίζεται σε πίνακα κατακερματισμού. Παρέχει γρήγορη πρόσβαση μέσω κλειδιού.

  2. LinkedHashMap — κληρονομεί από το HashMap, διατηρεί τη σειρά εισαγωγής των στοιχείων.

  3. SortedMap / TreeMap (μέσω Java) — απεικόνιση όπου τα κλειδιά είναι ταξινομημένα.

Διαφορές:

  • Το Map μόνο για ανάγνωση δεν επιτρέπει την τροποποίηση των δεδομένων.
  • Το MutableMap επιτρέπει την τροποποίηση.
  • Το HashMap είναι ταχύτερο, αλλά δεν εγγυάται τη σειρά.
  • Το LinkedHashMap διατηρεί τη σειρά εισαγωγής.

Στην Kotlin, οι τυπικές συναρτήσεις mapOf και mutableMapOf επιστρέφουν αντίστοιχα Map μόνο για ανάγνωση και MutableMap, που υλοποιούνται συνήθως μέσω του LinkedHashMap.