Sobes.tech
Junior

Meséljen a Java Map gyűjteményről és jellemzőiről.

sobes.tech MI

Válasz az MI-től

Map — a Java Collection Framework egyik interfésze, amely egy "kulcs-érték" párokat tartalmazó gyűjteményt képvisel. A kulcsok egyediek, az értékek ismétlődhetnek.

Fő jellemzők:

  • A kulcsot használjuk a megfelelő érték eléréséhez.
  • Egy kulcsot nem lehet kétszer hozzáadni. Ha egy meglévő kulcsot próbálunk hozzáadni, a régi érték felülíródik az újszerűvel.
  • A Map nem öröklődik a Collection interfésztől. Saját módszerei vannak a "kulcs-érték" párok kezelésére.
  • A "kulcs-érték" párok sorrendje változhat a konkrét implementációtól függően.

Népszerű Map implementációk:

  • HashMap: Nem garantálja az elemek sorrendjét. Magas teljesítményt nyújt a legtöbb műveletnél (beszúrás, lekérés, törlés) hash konfliktusok hiányában.
  • LinkedHashMap: Az elemek hozzáadásuk sorrendjében tárolja (vagy hozzáférési sorrendben, ha így van konfigurálva).
  • TreeMap: Rendezett sorrendben tárolja az elemeket a kulcs szerint (természetes sorrend vagy összehasonlító által biztosított). Logaritmikus időt biztosít a legtöbb művelethez.

Példák módszerekre:

// Érték lekérése kulcs alapján
Object value = map.get(key);

// Párok hozzáadása vagy frissítése
Object oldValue = map.put(key, value);

// Párok törlése kulcs alapján
Object removedValue = map.remove(key);

// Ellenőrzés, hogy létezik-e a kulcs
boolean containsKey = map.containsKey(key);

// Ellenőrzés, hogy létezik-e az érték
boolean containsValue = map.containsValue(value);

// Az összes kulcs halmazának lekérése
Set<KeyType> keys = map.keySet();

// Az összes érték gyűjteményének lekérése
Collection<ValueType> values = map.values();

// Az összes bejegyzés (kulcs-érték párok) halmazának lekérése
Set<Map.Entry<KeyType, ValueType>> entries = map.entrySet();

// A Map méretének lekérése
int size = map.size();

Map.Entry használata iteráció során:

// Entry set iterálása
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // ...
}