logo

Diferença entre HashMap e TreeMap

Java HashMap e ÁrvoreMapa ambas são classes da estrutura Java Collections. A implementação do Java Map geralmente atua como uma tabela hash agrupada. Quando os buckets ficam muito grandes, eles são transformados em nós de TreeNodes , cada um estruturado de forma semelhante aos de java.util.TreeMap .

HashMap

Implementos HashMap Mapa, Clonável e Serializável interface. Ele se estende ResumoMapa aula. Isso pertence a java.util pacote.

  • HashMap contém valor baseado na chave.
  • Pode ter uma única chave nula e vários valores nulos.
  • HashMap não mantém a ordem durante a iteração.
  • Ele contém elementos únicos.
  • Funciona com base no princípio do hash.

ÁrvoreMapa

A classe TreeMap se estende ResumoMapa classe e implementos Mapa Navegável , Clonável , e Serializável interface. TreeMap é um exemplo de ClassificadoMapa . É implementado pela árvore Vermelho-Preto, o que significa que a ordem das chaves é ordenada.

  • TreeMap também contém valores baseados na chave.
  • TreeMap é classificado por chaves.
  • Ele contém elementos únicos.
  • Não pode ter uma chave nula, mas vários valores nulos.
  • As chaves estão em ordem crescente.
  • Ele armazena o objeto na estrutura em árvore.

Semelhanças entre HashMap e TreeMap

    HashMape ÁrvoreMapa implementação de classes Clonável e Serializável interface.
  • Ambas as classes se estendem ResumoMapa aula.
  • Um mapa é um objeto que armazena valor chave pares. No par chave-valor, cada chave é única, mas seus valores podem ser duplicado .
  • Ambas as classes representam o mapeamento de chave para valores .
  • Ambos os mapas não são sincronizado .
  • Uso do mapa colocar() método para adicionar um elemento no mapa.
  • O iterador lança um ConcurrentModificationException se o mapa for modificado de alguma forma.

A principal diferença entre HashMap e TreeMap é:

HashMap não preserva a ordem da iteração enquanto o ÁrvoreMapa preservar a ordem usando o compareTo() método ou um comparador definido no construtor do TreeMap.

A tabela a seguir descreve as diferenças entre HashMap e TreeMap.

Base HashMap ÁrvoreMapa
Definição Java HashMap é uma implementação baseada em hashtable da interface Map. Java ÁrvoreMapa é uma implementação baseada em estrutura de árvore da interface Map.
Implementos de Interface Implementos HashMap Mapa, Clonável , e Serializável interface. Implementos TreeMap Mapa Navegável, Clonável , e Serializável interface.
Chaves/valores nulos HashMap permite um solteiro chave nula e múltiplo valores nulos. TreeMap não permite nulo chaves, mas pode ter múltiplo valores nulos.
Homogêneo / Heterogêneo HashMap permite elementos heterogêneos porque não realiza classificação em chaves. TreeMap permite valores homogêneos como chave devido à classificação.
Desempenho HashMap é mais rápido do que TreeMap porque fornece desempenho em tempo constante que é O(1) para operações básicas como get() e put(). TreeMap é lento em comparação com HashMap porque fornece o desempenho de O(log(n)) para a maioria das operações como add(), remove() e contains().
Estrutura de dados A classe HashMap usa o tabela hash . TreeMap usa internamente um Vermelho preto tree, que é uma árvore de pesquisa binária com auto-equilíbrio.
Método de comparação Ele usa é igual a() método do Objeto classe para comparar chaves. O método equals() da classe Map o substitui. Ele usa o compareTo() método para comparar chaves.
Funcionalidade A classe HashMap contém apenas funções básicas como get(), put(), KeySet() , etc. A classe TreeMap é rica em funcionalidades, pois contém funções como: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Ordem dos elementos HashMap não mantém nenhuma ordem. Os elementos são classificados em ordem natural (ascendente).
Usos O HashMap deve ser usado quando não precisamos do par chave-valor na ordem de classificação. O TreeMap deve ser usado quando exigirmos um par de valores-chave em ordem classificada (crescente).

Exemplo de HashMap vs TreeMap

No exemplo a seguir, podemos observar que os elementos do HashMap estão em ordem aleatória enquanto os elementos do TreeMap estão organizados em ordem crescente.

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

Saída:

Diferença entre HashMap e TreeMap