Sobes.tech
Junior

Vorbiți despre colecția Map în Java și caracteristicile sale.

sobes.tech AI

Răspuns de la AI

Map — este o interfață în Java Collection Framework care reprezintă o colecție de perechi "cheie-valoare". Cheile sunt unice, iar valorile pot fi repetate.

Caracteristici principale:

  • Cheia este utilizată pentru a accesa valoarea corespunzătoare.
  • Aceeași cheie nu poate fi adăugată de două ori. În cazul în care se încearcă adăugarea unei chei existente, valoarea veche este înlocuită cu cea nouă.
  • Map nu moștenește din interfața Collection. Are propriile metode pentru lucrul cu perechi "cheie-valoare".
  • Ordinea perechilor "cheie-valoare" poate varia în funcție de implementarea specifică.

Implementări populare ale Map:

  • HashMap: Nu garantează ordinea elementelor. Oferă performanță ridicată pentru cele mai multe operații (inserare, obținere, ștergere) în absența conflictelor de hash.
  • LinkedHashMap: Stochează elementele în ordinea în care au fost adăugate (sau în ordinea accesului, dacă este configurat corespunzător).
  • TreeMap: Stochează elementele în ordine sortată după cheie (ordine naturală sau furnizată de un comparator). Oferă timp logaritmic pentru cele mai multe operații.

Exemple de metode:

// Obține valoarea după cheie
Object value = map.get(key);

// Adaugă sau actualizează perechea cheie-valoare
Object oldValue = map.put(key, value);

// Șterge perechea după cheie
Object removedValue = map.remove(key);

// Verifică dacă o cheie există
boolean containsKey = map.containsKey(key);

// Verifică dacă o valoare există
boolean containsValue = map.containsValue(value);

// Obține setul tuturor cheilor
Set<KeyType> keys = map.keySet();

// Obține colecția tuturor valorilor
Collection<ValueType> values = map.values();

// Obține setul tuturor intrărilor (perechi cheie-valoare)
Set<Map.Entry<KeyType, ValueType>> entries = map.entrySet();

// Obține dimensiunea Map-ului
int size = map.size();

Utilizarea Map.Entry în timpul iterării:

// Iterare pe setul de intrări
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // ...
}