logo

Diferencia entre HashMap y TreeMap

Java HashMap y ÁrbolMapa ambas son las clases del marco de colecciones de Java. La implementación de Java Map generalmente actúa como una tabla hash agrupada. Cuando los cubos crecen demasiado, se transforman en nodos de Nodos de árbol , cada uno estructurado de manera similar a los de java.util.TreeMap .

HashMap

Implementos HashMap Mapa, clonable y Serializable interfaz. se extiende ResumenMapa clase. Pertenece a java.util paquete.

  • HashMap contiene un valor basado en la clave.
  • Puede tener una única clave nula y varios valores nulos.
  • HashMap no mantiene el orden durante la iteración.
  • Contiene elementos únicos.
  • Funciona según el principio de hash.

ÁrbolMapa

La clase TreeMap se extiende ResumenMapa clase e implementos Mapa Navegable , Clonable , y Serializable interfaz. TreeMap es un ejemplo de Mapa ordenado . Se implementa mediante el árbol Rojo-Negro, lo que significa que el orden de las claves está ordenado.

  • TreeMap también contiene valores basados ​​en la clave.
  • TreeMap está ordenado por claves.
  • Contiene elementos únicos.
  • No puede tener una clave nula pero sí varios valores nulos.
  • Las claves están en orden ascendente.
  • Almacena el objeto en la estructura de árbol.

Similitudes entre HashMap y TreeMap

    HashMapy ÁrbolMapa clases implementar Clonable y Serializable interfaz.
  • Ambas clases se extienden. ResumenMapa clase.
  • Un mapa es un objeto que almacena valor clave pares. En el par clave-valor, cada clave es única, pero sus valores pueden ser duplicar .
  • Ambas clases representan el mapeo de llave a valores .
  • Ambos mapas no son sincronizado .
  • Uso del mapa poner() Método para agregar un elemento en el mapa.
  • El iterador lanza un ConcurrentModificationException si el mapa se modifica de alguna manera.

La diferencia clave entre HashMap y TreeMap es:

HashMap no conserva el orden de iteración mientras el ÁrbolMapa preservar el orden utilizando el comparar con() método o un comparador establecido en el constructor de TreeMap.

La siguiente tabla describe las diferencias entre HashMap y TreeMap.

Base HashMap ÁrbolMapa
Definición Java HashMap es una implementación basada en tabla hash de la interfaz Map. Java ÁrbolMapa es una implementación basada en estructura de árbol de la interfaz Map.
Implementos de interfaz Implementos HashMap Mapa, clonable , y Serializable interfaz. Implementos TreeMap Mapa Navegable, Clonable , y Serializable interfaz.
Claves/valores nulos HashMap permite un soltero clave nula y múltiple valores nulos. TreeMap no permite nulo llaves pero puede tener múltiple valores nulos.
Homogéneo heterogéneo HashMap permite elementos heterogéneos porque no realiza clasificación por claves. TreeMap permite valores homogéneos como clave debido a la clasificación.
Actuación HashMap es más rápido que TreeMap porque proporciona un rendimiento en tiempo constante que es O(1) para operaciones básicas como get() y put(). TreeMap es lento en comparación con HashMap porque proporciona el rendimiento de O(log(n)) para la mayoría de operaciones como add(), remove() y contains().
Estructura de datos La clase HashMap utiliza el tabla de picadillo . TreeMap utiliza internamente un Negro rojo árbol, que es un árbol de búsqueda binaria autoequilibrado.
Método de comparación Usa es igual() método de la Objeto clase para comparar claves. El método equals() de la clase Map lo anula. Utiliza el comparar con() Método para comparar claves.
Funcionalidad La clase HashMap contiene solo funciones básicas como obtener(), poner(), conjunto de claves() , etc. . La clase TreeMap es rica en funcionalidades, porque contiene funciones como: tailMap(), primeraClave(), últimaClave(), encuestaPrimeraEntrada(), encuestaÚltimaEntrada() .
Orden de elementos HashMap no mantiene ningún orden. Los elementos están ordenados en orden natural (ascendente).
Usos HashMap debe usarse cuando no necesitamos pares clave-valor en orden. TreeMap debe usarse cuando necesitamos un par clave-valor en orden (ascendente).

Ejemplo de HashMap frente a TreeMap

En el siguiente ejemplo, podemos observar que los elementos de HashMap están en orden aleatorio mientras que los elementos de TreeMap están ordenados en orden ascendente.

 import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } } 

Producción:

Diferencia entre HashMap y TreeMap