Diferenças entre HashMap e TreeMap

O HashMap faz parte da coleção do Java. Ele fornece a implementação básica da Java Map Interface. Os dados são armazenados em pares (Chave, Valor). Você precisa conhecer sua chave para acessar um valor. O HashMap é conhecido como HashMap porque usa a técnica de Hashing. O TreeMap é usado para implementar a Interface do Mapa e o NavigableMap com a Classe Abstrata. O mapa é classificado pela ordem natural de suas chaves ou pelo comparador fornecido no momento da criação do mapa, dependendo de qual construtor é usado.

Semelhanças entre HashMap e TreeMap

Além das diferenças, existem as seguintes semelhanças entre o hashmap e o treemap:

  • As classes HashMap e TreeMap implementam interfaces Serializable e Cloneable.
  • O HashMap e o TreeMap estendem a classe AbstractMap.
  • As classes HashMap e TreeMap operam em pares de valores-chave.
  • O HashMap e o TreeMap são coleções não sincronizadas.
  • O HashMap e o TreeMap estão com falha nas coleções rápidas.

Ambas as implementações fazem parte da estrutura de coleta e armazenam dados em pares de valor-chave.

Programa Java mostrando HashMap e TreeMap

Aqui está um programa java que demonstra como os elementos são colocados e recuperados do hashmap:

package com.edubca.map;
import java.util.*;
class HashMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
HashMap hashmap =
new HashMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = hashmap.get(arr(i));
// If first occurrence of the element
if (hashmap.get(arr(i)) == null)
hashmap.put(arr(i), 1);
// If elements already present in hash map
else
hashmap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m:hashmap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test the above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)

Resultado:

A partir da saída, é claro que o hashmap não mantém nenhuma ordem. Aqui está um programa java que demonstra como os elementos são colocados e recuperados do treemap.

Código:

package com.edubca.map;
import java.util.*;
class TreeMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
TreeMap treemap =
new TreeMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = treemap.get(arr(i));
// If first occurrence of element
if (treemap.get(arr(i)) == null)
treemap.put(arr(i), 1);
// If elements already present in hash map
else
treemap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m: treemap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)

Resultado:

A partir da saída, observa-se que as chaves são classificadas em uma ordem natural. Portanto, o Treemap mantém a ordem classificada.

Diferenças cara a cara entre HashMap e TreeMap (Infográficos)

Dada a seguir, estão as principais diferenças entre o HashMap e o TreeMap

Diferença chave do HashMap vs TreeMap

A seguir, estão os pontos das diferenças principais HashMap e TreeMap:

1. Estrutura e Implementação

Hash Map é uma implementação baseada em tabela de hash. Ele estende a classe Abstract Map e implementa a interface Map. Um mapa de hash funciona com base no princípio do hash. A implementação do Mapa atua como uma tabela de hash em bucket, mas quando os buckets ficam muito grandes em tamanho, eles são convertidos em nós da Árvore, cada um com uma estrutura semelhante aos nós do TreeMap. O TreeMap estende a classe Abstract Map e implementa uma interface de Mapa Navegável. A estrutura de dados subjacente para o mapa da árvore é uma árvore Vermelho-Preto.

2. Ordem de Iteração

A ordem de Iteração do Mapa Hash é indefinida, enquanto os elementos de um TreeMap são ordenados em ordem natural ou em uma ordem personalizada especificada usando um comparador.

3. Desempenho

Como o Hashmap é uma implementação baseada em hashtable, fornece desempenho em tempo constante igual a O (1) para a maioria das operações comuns. O tempo necessário para procurar um elemento em um mapa de hash é O (1). Mas se houver uma implementação incorreta no hashmap, isso poderá levar a sobrecarga adicional de memória e degradação do desempenho. Por outro lado, o TreeMap fornece um desempenho de O (log (n)). Como o hashmap é baseado em hashtable, ele requer um intervalo contíguo de memória, enquanto um treemap usa apenas a quantidade de memória necessária para reter itens. Portanto, o HashMap é mais eficiente em termos de tempo que o treemap, mas o treemap é mais eficiente em termos de espaço que o HashMap.

4. Tratamento nulo

O HashMap permite quase uma chave nula e muitos valores nulos, enquanto que, em um mapa de árvore, nulo não pode ser usado como chave, embora valores nulos sejam permitidos. Se null for usado como uma chave no hashmap, ele lançará uma exceção de ponteiro nulo, porque usa internamente o método compare ou compareTo para classificar elementos.

Comparação de tabela

Aqui está uma tabela de comparação mostrando as diferenças entre o hashmap e o treemap:

Base de comparaçãoHashMapTreeMap
Sintaxeclasse pública HashMap estende o AbstractMap implementa Map, Cloneable, Serializablepublic class TreeMap estende AbstractMap implementaNavigableMap, Cloneable, Serializable
EncomendaO HashMap não fornece nenhuma ordem para elementos.Os elementos são pedidos em um pedido natural ou personalizado.
RapidezRápidoLento
Chaves e valores nulosPermite quase uma chave como valores nulos e múltiplos nulos.Não permite nulo como chave, mas permite vários valores nulos.
Consumo de memóriaO HashMap consome mais memória devido à Tabela Hash subjacente.Consome menos memória em comparação com o HashMap.
FuncionalidadeFornece apenas recursos básicosEle fornece recursos mais ricos.
Método de comparação usadoUsa basicamente o método equals () para comparar chaves.Usa o método compare () ou compareTo () para comparar chaves.
Interface implementadaMapa, serializável e clonávelMapa navegável, serializável e clonável
atuaçãoDá um desempenho de O (1).Fornece desempenho de O (log n)
Estrutura de dadosUsa a tabela de hash como uma estrutura de dados.Faz uso da Árvore Vermelho-Preto para armazenamento de dados.
Elementos homogêneos e heterogêneosPermite elementos homogêneos e heterogêneos porque não realiza nenhuma classificação.Ele permite apenas elementos homogêneos ao realizar a classificação.
Casos de UsoUsado quando não exigimos pares de valores-chave em ordem classificada.Utilizado quando é necessário classificar os pares de valores-chave de um mapa.

Conclusão

A partir do artigo, conclui-se que o hashmap é uma implementação de uso geral da interface do Mapa. Ele fornece desempenho de O (1) enquanto o Treemap fornece um desempenho de O (log (n)). Portanto, o HashMap geralmente é mais rápido que o TreeMap.

Artigos recomendados

Este é um guia para HashMap vs TreeMap. Aqui discutimos a introdução do HashMap vs TreeMap, diferenças entre o Hashmap e o Treemap e uma tabela de comparação. Você também pode consultar nossos outros artigos sugeridos para saber mais:

  1. WebLogic vs JBoss
  2. Lista vs Conjunto
  3. Git Fetch vs Git Fetch
  4. Kafka vs Spark | Principais diferenças
  5. As 5 principais diferenças entre Kafka e Kinesis