TreeMap es parte del marco de colecciones de Java. Java TreeMap contiene valores basados en la clave. Implementa la interfaz NavigableMap y extiende la clase AbstractMap . Proporciona un medio eficaz para almacenar pares clave-valor en orden. Java TreeMap contiene solo elementos únicos. No puede tener una clave nula pero puede tener múltiples valores nulos. TreeMap mantiene el orden ascendente de los elementos. Sincronización significa controlar el acceso de múltiples subprocesos a cualquier recurso compartido. Un recurso sincronizado solo puede ser accedido por un subproceso a la vez. Java TreeMap no está sincronizado, tenemos que sincronizarlo explícitamente para usarlo en un entorno de subprocesos múltiples.
TreeMap se puede sincronizar mediante el método Collections.synchronizedMap() . El método synchronizedMap() de la clase Collections toma el mapa que debe sincronizarse como parámetro y devuelve un mapa sincronizado seguro para subprocesos. El método sincronizadoMap() de la clase java.util.Collections se utiliza para devolver un mapa sincronizado (seguro para subprocesos) respaldado por el mapa especificado. Para garantizar el acceso en serie, es fundamental que todo acceso al mapa de respaldo se realice a través del mapa devuelto.
Sintaxis:
public static <K, V> Map<K, V> synchronizedMap(Map<K, V> m)
Parámetros: Este método toma el mapa como parámetro para ser “envuelto” en un mapa sincronizado.
Valor devuelto: este método devuelve una vista sincronizada del mapa especificado.
Implementación:
Ejemplo
Java
// Java program to demonstrate // synchronization of TreeMap // Importing all classes from // java.util package import java.util.*; // Class public class GFG { // Main driver method public static void main(String[] args) throws Exception { // Try block to check if any exception occurs try { // Step1: Creating a TreeMap object // Declaring object of string type TreeMap<String, String> treeMap = new TreeMap<String, String>(); // Step2: Adding elements into the above Map // Custom inputs treeMap.put("1", "Welcome"); treeMap.put("2", "To"); treeMap.put("3", "Geeks"); treeMap.put("4", "For"); treeMap.put("5", "Geeks"); // Printing all elements of the above Map object System.out.println("Map : " + treeMap); // Synchronizing the map using // synchronizedMap() method of Collection class Map<String, String> sMap = Collections.synchronizedMap(treeMap); // Printing the Collection System.out.println("Synchronized map is : " + sMap); } // Catch block to handle the exceptions catch (IllegalArgumentException e) { // Displaying and printing the exception System.out.println("Exception thrown : " + e); } } }
Map : {1=Welcome, 2=To, 3=Geeks, 4=For, 5=Geeks} Synchronized map is : {1=Welcome, 2=To, 3=Geeks, 4=For, 5=Geeks}