Sobes.tech
Junior

Erzählen Sie mir von der Map-Sammlung in Java und ihren Besonderheiten.

sobes.tech KI

Antwort von AI

Map — ist eine Schnittstelle im Java Collection Framework, die eine Sammlung von "Schlüssel-Wert"-Paaren darstellt. Die Schlüssel sind eindeutig, die Werte können sich wiederholen.

Hauptmerkmale:

  • Der Schlüssel wird verwendet, um auf den entsprechenden Wert zuzugreifen.
  • Derselbe Schlüssel kann nicht zweimal hinzugefügt werden. Beim Versuch, einen bestehenden Schlüssel hinzuzufügen, wird der alte Wert durch den neuen ersetzt.
  • Map erbt nicht von der Schnittstelle Collection. Sie hat eigene Methoden zur Arbeit mit "Schlüssel-Wert"-Paaren.
  • Die Reihenfolge der "Schlüssel-Wert"-Paare kann je nach konkreter Implementierung variieren.

Beliebte Implementierungen von Map:

  • HashMap: Garantiert keine Reihenfolge der Elemente. Bietet hohe Leistung für die meisten Operationen (Einfügen, Abrufen, Entfernen) bei fehlenden Hash-Konflikten.
  • LinkedHashMap: Speichert die Elemente in der Reihenfolge ihrer Hinzufügung (oder in Zugriffsreihenfolge, wenn entsprechend konfiguriert).
  • TreeMap: Speichert die Elemente in sortierter Reihenfolge nach dem Schlüssel (natürliche Reihenfolge oder durch einen Comparator bereitgestellt). Bietet logarithmische Zeit für die meisten Operationen.

Beispielmethoden:

// Wert nach Schlüssel abrufen
Object value = map.get(key);

// Paar Schlüssel-Wert hinzufügen oder aktualisieren
Object oldValue = map.put(key, value);

// Paar nach Schlüssel entfernen
Object removedValue = map.remove(key);

// Vorhandensein eines Schlüssels prüfen
boolean containsKey = map.containsKey(key);

// Vorhandensein eines Wertes prüfen
boolean containsValue = map.containsValue(value);

// Alle Schlüssel abrufen
Set<KeyType> keys = map.keySet();

// Alle Werte abrufen
Collection<ValueType> values = map.values();

// Alle Einträge (Schlüssel-Wert-Paare) abrufen
Set<Map.Entry<KeyType, ValueType>> entries = map.entrySet();

// Größe des Maps ermitteln
int size = map.size();

Verwendung von Map.Entry bei der Iteration:

// Über das Entry-Set iterieren
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // ...
}