Maps Java

In Java sind Maps eine spezielle Art von Datenstruktur, die Schlüssel-Wert-Paare speichert. Die Map-Schnittstelle in Java stellt eine Sammlung von Objekten dar, bei der jedes Objekt (ein Wert) durch einen eindeutigen Schlüssel identifiziert wird. Anders als in einer List oder Set, bei denen Elemente durch ihre Position oder durch ihre Einzigartigkeit identifiziert werden, wird bei einer Map jedes Element durch einen Schlüssel identifiziert, der mit einem Wert verknüpft ist.

Wichtige Implementierungen der Map-Schnittstelle:

HashMap: Die häufigste Implementierung der Map-Schnittstelle. Sie verwendet eine Hash-Tabelle zur Speicherung von Daten und bietet schnellen Zugriff auf Elemente. Die Reihenfolge der Einträge ist nicht garantiert.

LinkedHashMap: Eine Erweiterung von HashMap, die die Einfügereihenfolge der Einträge beibehält. Wenn Elemente in einer bestimmten Reihenfolge durchlaufen werden sollen, ist LinkedHashMap eine gute Wahl.

TreeMap: Eine Map, die ihre Schlüssel in aufsteigender natürlicher Reihenfolge oder nach einem benutzerdefinierten Comparator sortiert. TreeMap ist langsamer als HashMap, aber es garantiert die Reihenfolge (nicht aufsteigen) der Schlüssel.

Hashtable: Ähnlich wie HashMap, aber synchronisiert und daher threadsicher. Hashtable ist jedoch in modernen Anwendungen weniger gebräuchlich, da ConcurrentHashMap in vielen Fällen eine bessere Wahl ist.

ConcurrentHashMap: Eine threadsichere Variante von HashMap, die für den Einsatz in Umgebungen mit mehreren Threads optimiert ist.

Map is used to implement Sets!

Initialisierung

Map<String, Integer> mapName = new HashMap<String, Integer>();
    key       value

put Map Java

TreeMap<String, List<Double>> mapName = new TreeMap<>();        // instance

String[] input = scanner.nextLine().split("\\s+");             // some input
String key = input[0];
double element = Double.parseDouble(input[1]);

mapName.putIfAbsent(key, new ArrayList<>());         // create if not exist
List<Double> listOfElements = mapName.get(key);      // get the list for the key
listOfElements.add(element);                         // add the new element to the list
mapName.put(key, listOfElements);                    // not required

Iterating on a Map

Iterating on the keys:

for (String key : mapName.keySet()) {
    System.out.println("Key " + key + " Value " + mapName.get(key));
}

Iterating on the values:

for (Map.Entry<String, Integer> entry : mapName.entrySet()) {
    System.out.println("Key " + entry.getKey() + " Value " + mapName.getValue());
}

the same as:

for (var entry : mapName.entrySet()) {
    System.out.println("Key " + entry.getKey() + " Value " + mapName.getValue());
}

Wichtigsten Funktionen (Methoden) von Maps in Java

Hier ist eine Auflistung der wichtigsten Funktionen (Methoden) von Maps in Java, die zur Verwaltung und zum Umgang mit Schlüssel-Wert-Paaren verwendet werden:

  1. put(K key, V value) Fügt ein Schlüssel-Wert-Paar zur Map hinzu. Wenn der Schlüssel bereits existiert, wird der alte Wert durch den neuen ersetzt.
    Beispiel: map.put(„Apfel“, 3);
  2. get(Object key) Gibt den Wert zurück, der mit dem angegebenen Schlüssel verknüpft ist, oder null, wenn der Schlüssel nicht in der Map vorhanden ist.
    Beispiel: int value = map.get(„Apfel“);
  3. remove(Object key) Entfernt das Schlüssel-Wert-Paar für den angegebenen Schlüssel aus der Map, falls es vorhanden ist.
    Beispiel: map.remove(„Banane“);
  4. containsKey(Object key) Überprüft, ob der angegebene Schlüssel in der Map vorhanden ist.
    Beispiel: boolean exists = map.containsKey(„Orange“);
  5. containsValue(Object value) Überprüft, ob der angegebene Wert in der Map vorhanden ist.
    Beispiel: boolean valueExists = map.containsValue(3);
  6. size() Gibt die Anzahl der Schlüssel-Wert-Paare in der Map zurück.
    Beispiel: int size = map.size();
  7. isEmpty() Überprüft, ob die Map leer ist (d.h., keine Schlüssel-Wert-Paare enthält).
    Beispiel: boolean empty = map.isEmpty();
  8. clear() Entfernt alle Schlüssel-Wert-Paare aus der Map.
    Beispiel: map.clear();
  9. keySet() Gibt eine Set-Ansicht aller Schlüssel in der Map zurück.
    Beispiel: Set keys = map.keySet();
  10. values() Gibt eine Collection-Ansicht aller Werte in der Map zurück.
    Beispiel: Collection values = map.values();
  11. entrySet() Gibt eine Set-Ansicht aller Schlüssel-Wert-Paare (Entries) in der Map zurück.
    Beispiel: Set> entries = map.entrySet();
  12. putAll(Map m) Fügt alle Schlüssel-Wert-Paare aus der angegebenen Map zur aktuellen Map hinzu.
    Beispiel: map.putAll(anotherMap);
  13. getOrDefault(Object key, V defaultValue) Gibt den Wert für den angegebenen Schlüssel zurück, oder defaultValue, wenn der Schlüssel nicht in der Map vorhanden ist.
    Beispiel: int value = map.getOrDefault(„Apfel“, 0);
  14. replace(K key, V value) Ersetzt den Wert für den angegebenen Schlüssel durch den neuen Wert, wenn der Schlüssel vorhanden ist.
    Beispiel: map.replace(„Apfel“, 5);
  15. replace(K key, V oldValue, V newValue) Ersetzt den Wert für den angegebenen Schlüssel nur, wenn er aktuell auf oldValue gesetzt ist.
    Beispiel: map.replace(„Apfel“, 3, 5);
  16. putIfAbsent(K key, V value) Fügt das Schlüssel-Wert-Paar nur hinzu, wenn der Schlüssel noch nicht in der Map vorhanden ist.
    Beispiel: map.putIfAbsent(„Apfel“, 4);
  17. compute(K key, BiFunction remappingFunction) Aktualisiert den Wert für den angegebenen Schlüssel mithilfe der angegebenen Berechnungsfunktion, die den aktuellen Schlüssel und Wert verwendet. Aktualisiert den Wert für den angegebenen Schlüssel mithilfe der angegebenen Berechnungsfunktion, die den aktuellen Schlüssel und Wert verwendet. Beispiel: map.compute(„Apfel“, (key, val) -> (val == null) ? 1 : val + 1);
  18. computeIfAbsent(K key, Function mappingFunction) – Berechnet den Wert und fügt ihn hinzu, wenn der Schlüssel noch nicht in der Map vorhanden ist. Beispiel: map.computeIfAbsent(„Apfel“, key -> 1);
  19. computeIfPresent(K key, BiFunction remappingFunction) – Aktualisiert den Wert nur, wenn der Schlüssel bereits vorhanden ist. Beispiel: map.computeIfPresent(„Apfel“, (key, val) -> val + 1);
  20. merge(K key, V value, BiFunction remappingFunction) – Fügt den Schlüssel-Wert-Paar hinzu, wenn der Schlüssel noch nicht existiert, oder aktualisiert den Wert mithilfe der Remapping-Funktion, wenn der Schlüssel bereits existiert. Beispiel: map.merge(„Apfel“, 1, Integer::sum);

Diese Methoden ermöglichen es, auf eine Vielzahl von Weisen mit Maps in Java zu arbeiten. Sie bieten grundlegende Funktionen wie Hinzufügen, Entfernen und Abrufen von Werten sowie erweiterte Funktionen wie bedingtes Einfügen und Berechnen von Werten. Die Wahl der Methode hängt oft vom spezifischen Anwendungsfall ab.

error: Content is protected !!