La clase Java TreeMap almacena datos en una estructura de árbol utilizando una interfaz de mapa. Esta clase amplía la clase AbstractMap y, al igual que su clase principal, TreeMap tiene dos parámetros de tipo. Uno de sus parámetros de tipo representa las claves en el TreeMap, mientras que el otro representa los valores.
La estructura de datos TreeMap almacena pares clave-valor y le permite realizar operaciones CRUD en estos datos.
Cómo crear un TreeMap en Java
La clase TreeMap tiene cuatro constructores que puede usar para crear un nuevo objeto TreeMap. El constructor predeterminado es el más popular de los cuatro. Este constructor no acepta argumentos y genera un mapa de árbol vacío.
// Crear un nuevo mapa de árbol
ÁrbolMapa clientes = nuevo ÁrbolMapa();
El código anterior genera un mapa de árbol vacío llamado clientes.
Llenar la estructura de datos de TreeMap
los poner() El método agrega un elemento a un objeto TreeMap. Se necesitan dos argumentos: una clave y su valor. Puede agregar elementos al mapa de árbol en cualquier orden aleatorio y la estructura de datos los almacenará en orden ascendente, según sus claves.
// Rellenar un mapa de árbol
clientes.put(105, "Jessica Jones");
clientes.put(102, "Mark Williams");
clientes.put(104, "Phil Blair");
clientes.put(101, "Kim Marrón");
clientes.put(103, "Jim Riley");
El código anterior agrega cinco clientes, en orden aleatorio, al mapa de árbol de clientes.
Visualización de elementos en un TreeMap
La clase TreeMap almacena sus datos en un objeto. Entonces, para ver todos los elementos en un mapa de árbol, simplemente puede imprimir el objeto de mapa de árbol en la consola:
// Ver todos los elementos del mapa de árbol como un objeto
System.out.println (clientes);
El código anterior imprime el siguiente resultado en la consola:
{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}
Tenga en cuenta que el objeto anterior muestra los elementos en orden ascendente. También puede ver cada elemento y su clave correspondiente usando un bucle for de Java.
// Ver todos los elementos con un iterador
por (Entrada cliente: clientes.entrySet()) {
System.out.println("Clave: " + cliente.getKey() + " Valor: " + cliente.getValue());
}
El código anterior imprime el siguiente resultado en la consola:
Clave: 101 Valor: Kim Brown
Clave: 102 Valor: Mark Williams
Clave: 103 Valor: Jim Riley
Clave: 104 Valor: Phil Blair
Clave: 105 Valor: Jessica Jones
Actualización de elementos en un TreeMap
La clase TreeMap le permite actualizar un elemento existente usando el reemplazar() método. Hay dos métodos de reemplazo. El primer método toma una clave existente y el nuevo valor al que desea asignar la clave existente.
// Reemplazar el valor existente
clientes.reemplazar(101, "Kim Smith");
System.out.println (clientes);
El código anterior imprime el siguiente objeto en la consola:
{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}
Como puedes ver kim marrón es ahora kim smith. El segundo método replace() toma una clave existente, el valor actual de la clave y el nuevo valor que desea asignar a la clave.
// Reemplazar el valor existente
clientes.reemplazar(103, "Jim Riley", "Michelle Noé");
System.out.println (clientes);
El código anterior imprime el siguiente objeto en la consola:
{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}
En el objeto de arriba michelle noe reemplaza jim riley.
Eliminación de elementos del TreeMap
Si desea eliminar un solo elemento del mapa de árbol, el retirar() método es su única opción. Toma la clave asociada con el elemento que desea eliminar y devuelve el valor eliminado.
// Quitar un elemento
clientes.remove(104);
System.out.println (clientes);
Ejecutar el código anterior imprime el siguiente objeto en la consola:
{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}
Este Clase Java también tiene un claro() método que le permite eliminar todos los elementos en el mapa de árbol.
El TreeMap vs. la clase HashMap Java
TreeMap y HashMap son dos de las clases de mapas de Java más populares. Ambos amplían la clase AbstractMap. Esta relación da acceso a las clases TreeMap y HashMap a muchas de las mismas funciones.
Sin embargo, hay algunas diferencias notables entre estas dos clases de mapas. TreeMap usa una implementación de árbol rojo-negro de la interfaz de mapa, mientras que HashMap usa una tabla hash. HashMap le permite almacenar una sola clave nula, mientras que TreeMap no lo hace. Finalmente, un HashMap es más rápido que un TreeMap. La velocidad algorítmica del primero es O(1) mientras que la del segundo es O(log (n)).