Heim  >  Artikel  >  Java  >  Holen Sie sich eine synchronisierte Karte von Java TreeMap

Holen Sie sich eine synchronisierte Karte von Java TreeMap

WBOY
WBOYnach vorne
2023-09-02 16:41:021186Durchsuche

从 Java TreeMap 获取同步地图

Um eine synchronisierte Karte von einer TreeMap in Java zu erhalten, können wir die integrierte Methode „synchronizedMap()“ der Collection-Schnittstelle verwenden. Hier ist TreeMap eine Klasse, die zur Implementierung der NavigableMap-Schnittstelle verwendet wird. Es speichert die Elemente der Karte in einer Baumstruktur. Es bietet eine effiziente Alternative zum Speichern von Schlüssel-Wert-Paaren in sortierter Reihenfolge. Standardmäßig ist TreeMap nicht synchronisiert. In diesem Artikel erklären wir anhand eines Beispielprogramms die Notwendigkeit der Synchronisation und deren praktische Umsetzung.

Synchronisierte Karte der Baumkarte

Treemap ist nicht Thread-sicher. Das heißt, wenn wir es in einer Multithread-Umgebung implementieren, können mehrere Threads ohne Koordination gleichzeitig darauf zugreifen und es ändern. Dies kann zu Dateninkonsistenzen und unerwartetem Verhalten von Elementen führen. Es kann auch Auswirkungen auf das Ergebnis der Operation haben.

Daher müssen wir synchronisiertMap() verwenden, um den Zugriff auf TreeMap-Elemente zu synchronisieren. Diese Methode erstellt einen Wrapper um die ursprüngliche TreeMap und sperrt sie, wenn ein Thread versucht, darauf zuzugreifen oder sie zu ändern.

synchronizedMap() ist eine statische Methode der Collections-Klasse, die eine Instanz der TreeMap-Sammlung als Parameter verwendet und daraus eine synchronisierte Map zurückgibt.

Grammatik

Collections.synchronizedMap(instanceOfTreeMap);

Hier ist „Collections“ eine Klasse der Collection-Schnittstelle.

Die allgemeine Syntax von

TreeMap lautet wie folgt -

Grammatik

TreeMap<TypeOfKey, TypeOfValue> nameOfMap = new TreeMap<>();

Methode

  • Importieren Sie zunächst das Paket „java.util“, um die TreeMap-Klasse zu aktivieren.

  • Dann erstellen Sie eine TreeMap, in der die Schlüssel vom Typ String und die Werte sind Integer-Typ.

  • Verwenden Sie die integrierte Methode „put()“, um einige Elemente in einer Sammlung zu speichern

  • Jetzt synchronisieren Sie diese Elemente und speichern Sie sie in einer Variablen vom Typ Map.

  • Zum Schluss drucken Sie die neue synchronisierte Karte aus und beenden Sie den Vorgang.

Beispiel 1

Das folgende Beispiel zeigt, wie synchronisiertMap() verwendet wird, um eine angegebene TreeMap zu synchronisieren.

import java.util.*;
public class Maps {
   public static void main(String[] args) {
      TreeMap<String, Integer> cart = new TreeMap<>();
      // Adding elements in the cart map
      cart.put("Butter", 5);
      cart.put("Milk", 10);
      cart.put("Rice", 20);
      cart.put("Bread", 2);
      cart.put("Peanut", 2);
      // print synchronized map from TreeMap
      Map mapSynched = Collections.synchronizedMap(cart);
      System.out.println("Synchronized Map from TreeMap: " + mapSynched);
   }
}

Ausgabe

Synchronized Map from TreeMap: {Bread=2, Butter=5, Milk=10, Peanut=2, Rice=20}

Methode

  • Importieren Sie zunächst das Paket „java.util“, um die TreeMap-Klasse zu aktivieren.

  • Dann erstellen Sie eine TreeMap, in der die Schlüssel vom Typ String und die Werte vom Typ Integer sind

  • Verwenden Sie die integrierte Methode „put()“, um einige Elemente in einer Sammlung zu speichern

  • Jetzt verwenden Sie die synchronisierteMap()-Methode, um diese Elemente zu synchronisieren und in einer neuen Kartensammlung zu speichern.

  • Abschließend definieren Sie einen Synchronisierungsblock. Innerhalb dieses Blocks werden die Elemente mit der Methode „keySet()“ mithilfe einer for-each-Schleife gedruckt.

Beispiel 2

Im folgenden Beispiel verwenden wir die synchronisierteMap()-Methode und einen synchronisierten Block, um die angegebene TreeMap zu synchronisieren

import java.util.*;
public class Maps {
   public static void main(String[] args) {
      TreeMap<String, Integer> cart = new TreeMap<>();
      // Adding elements in the cart map
      cart.put("Butter", 5);
      cart.put("Milk", 10);
      cart.put("Rice", 20);
      cart.put("Bread", 2);
      cart.put("Peanut", 2);
      // creating new synchronized Map
      Map<String, Integer> mapSynched = Collections.synchronizedMap(cart);
      System.out.println("Synchronized Map from TreeMap: " );
      // printing synchronized map from TreeMap
      synchronized (mapSynched) {
         for (String unKey : mapSynched.keySet()) {
            System.out.println("Item: " + unKey + ", Quantity: " +
            cart.get(unKey));
         }
      }
   }
}

Ausgabe

Synchronized Map from TreeMap:
Item: Bread, Quantity: 2
Item: Butter, Quantity: 5
Item: Milk, Quantity: 10
Item: Peanut, Quantity: 2
Item: Rice, Quantity: 20

Fazit

Synchronisation ist der Prozess der Koordination und Gewährleistung der korrekten Kommunikation zwischen zwei oder mehr Aktivitäten. Da eine fehlende Synchronisierung von TreeMap zu Dateninkonsistenzen führen kann, müssen wir es synchronisieren. Die integrierte Methode „Collections.synchronizedMap()“ ist eine bequemere Möglichkeit, diese Aufgabe auszuführen.

Das obige ist der detaillierte Inhalt vonHolen Sie sich eine synchronisierte Karte von Java TreeMap. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen