Maison  >  Article  >  Java  >  Obtenez une carte synchronisée à partir de Java TreeMap

Obtenez une carte synchronisée à partir de Java TreeMap

WBOY
WBOYavant
2023-09-02 16:41:021224parcourir

从 Java TreeMap 获取同步地图

Pour obtenir une Map synchronisée à partir d'un TreeMap en Java, nous pouvons utiliser la méthode intégrée "synchronizedMap()" de l'interface Collection. Ici, TreeMap est une classe utilisée pour implémenter l'interface NavigableMap. Il stocke les éléments de la carte dans une structure arborescente. Il constitue une alternative efficace au stockage des paires clé-valeur dans un ordre trié. Par défaut, TreeMap n'est pas synchronisé. Dans cet article, nous expliquerons la nécessité de la synchronisation et sa mise en œuvre pratique à travers un exemple de programme.

Carte synchronisée de la carte des arbres

Treemap n'est pas thread-safe, ce qui signifie que lorsque nous l'implémentons dans un environnement multithread, plusieurs threads peuvent y accéder et le modifier simultanément sans aucune coordination. Cela peut entraîner des incohérences dans les données et un comportement inattendu des éléments. Cela peut également affecter le résultat de l’opération.

Par conséquent, nous devons utiliser synchroniséMap() pour synchroniser l'accès aux éléments TreeMap. Cette méthode crée un wrapper autour du TreeMap d'origine et le verrouille lorsqu'un thread tente d'y accéder ou de le modifier.

synchronizedMap() est une méthode statique de la classe Collections qui prend une instance de la collection TreeMap comme paramètre et en renvoie une carte synchronisée.

Grammaire

Collections.synchronizedMap(instanceOfTreeMap);

Ici, "Collections" est une classe de l'interface de collection.

La syntaxe générale de

TreeMap est la suivante -

Grammaire

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

Méthode

  • Tout d’abord, importez le package « java.util » pour activer la classe TreeMap.

  • Ensuite, créez un TreeMap où les clés sont de type String et les valeurs sont Type entier.

  • Utilisez la méthode intégrée "put()" pour stocker certains éléments dans une collection

  • Maintenant, synchronisez ces éléments et stockez-les dans une variable de type Map.

  • Enfin, imprimez la nouvelle carte synchronisée et quittez.

Exemple 1

L'exemple suivant illustre comment utiliser synchroniséMap() pour synchroniser un TreeMap spécifié.

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);
   }
}

Sortie

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

Méthode

  • Tout d’abord, importez le package « java.util » pour activer la classe TreeMap.

  • Ensuite, créez un TreeMap où les clés sont de type String et les valeurs sont de type Integer

  • Utilisez la méthode intégrée "put()" pour stocker certains éléments dans une collection

  • Maintenant, utilisez la méthode synchroniséMap() pour synchroniser ces éléments et les stocker dans une nouvelle collection Map.

  • Enfin, définissez un bloc de synchronisation. Dans ce bloc, les éléments sont imprimés à l'aide de la méthode "keySet()" en utilisant une boucle for-each.

Exemple 2

Dans l'exemple suivant, nous utiliserons la méthode synchroniséeMap() et un bloc synchronisé pour synchroniser le TreeMap donné

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));
         }
      }
   }
}

Sortie

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

Conclusion

La synchronisation est le processus permettant d'établir une coordination et d'assurer une communication correcte entre deux ou plusieurs activités. Étant donné qu'une désynchronisation de TreeMap peut entraîner une incohérence des données, nous devons le synchroniser. La méthode intégrée « Collections.synchronizedMap() » est un moyen plus pratique d’effectuer cette tâche.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer