Sobes.tech
Junior

Αναφέρετε τη συλλογή Map στη Java και τα χαρακτηριστικά της.

sobes.tech AI

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

Map — είναι μια διεπαφή στο Java Collection Framework που αντιπροσωπεύει μια συλλογή από ζεύγη "κλειδί-τιμή". Τα κλειδιά είναι μοναδικά, ενώ οι τιμές μπορούν να επαναληφθούν.

Βασικά χαρακτηριστικά:

  • Το κλειδί χρησιμοποιείται για την πρόσβαση στην αντίστοιχη τιμή.
  • Το ίδιο κλειδί δεν μπορεί να προστεθεί δύο φορές. Προσπαθώντας να προσθέσετε ένα υπάρχον κλειδί, η παλιά τιμή αντικαθίσταται από τη νέα.
  • Το Map δεν κληρονομεί από τη διεπαφή Collection. Έχει δικές του μεθόδους για εργασία με ζεύγη "κλειδί-τιμή".
  • Η σειρά των ζευγών "κλειδί-τιμή" μπορεί να διαφέρει ανάλογα με την υλοποίηση.

Δημοφιλείς υλοποιήσεις του Map:

  • HashMap: Δεν εγγυάται τη σειρά των στοιχείων. Παρέχει υψηλή απόδοση για τις περισσότερες λειτουργίες (εισαγωγή, ανάκτηση, διαγραφή) χωρίς συγκρούσεις hash.
  • LinkedHashMap: Αποθηκεύει τα στοιχεία με τη σειρά που προστέθηκαν (ή με σειρά πρόσβασης, αν έχει διαμορφωθεί έτσι).
  • TreeMap: Αποθηκεύει τα στοιχεία σε ταξινομημένη σειρά με βάση το κλειδί (φυσική σειρά ή με χρήση συγκριτή). Παρέχει χρόνο λογαριθμικό για τις περισσότερες λειτουργίες.

Παραδείγματα μεθόδων:

// Λήψη τιμής με βάση το κλειδί
Object value = map.get(key);

// Προσθήκη ή ενημέρωση ζεύγους κλειδί-τιμή
Object oldValue = map.put(key, value);

// Διαγραφή ζεύγους με βάση το κλειδί
Object removedValue = map.remove(key);

// Έλεγχος αν υπάρχει το κλειδί
boolean containsKey = map.containsKey(key);

// Έλεγχος αν υπάρχει η τιμή
boolean containsValue = map.containsValue(value);

// Απόκτηση συνόλου όλων των κλειδιών
Set<KeyType> keys = map.keySet();

// Απόκτηση συλλογής όλων των τιμών
Collection<ValueType> values = map.values();

// Απόκτηση συνόλου όλων των καταχωρίσεων (ζεύγη κλειδί-τιμή)
Set<Map.Entry<KeyType, ValueType>> entries = map.entrySet();

// Απόκτηση μεγέθους του `Map`
int size = map.size();

Χρήση του Map.Entry κατά την επανάληψη:

// Επανάληψη μέσω του `Entry` set
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // ...
}