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.
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.
Collections.synchronizedMap(instanceOfTreeMap);
Ici, "Collections" est une classe de l'interface de collection.
La syntaxe générale deTreeMap est la suivante -
TreeMap<TypeOfKey, TypeOfValue> nameOfMap = new TreeMap<>();
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.
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); } }
Synchronized Map from TreeMap: {Bread=2, Butter=5, Milk=10, Peanut=2, Rice=20}
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.
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)); } } } }
Synchronized Map from TreeMap: Item: Bread, Quantity: 2 Item: Butter, Quantity: 5 Item: Milk, Quantity: 10 Item: Peanut, Quantity: 2 Item: Rice, Quantity: 20
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!