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();
// ...
}