Diferença entre HashMap e LinkedHashMap em Java

Autor: Laura McKinney
Data De Criação: 2 Abril 2021
Data De Atualização: 24 Abril 2024
Anonim
Diferença entre HashMap e LinkedHashMap em Java - Tecnologia
Diferença entre HashMap e LinkedHashMap em Java - Tecnologia

Contente


HashMap e LinkedHashMap são as classes bastante semelhantes entre si e são usadas para criar um mapa. A classe HashMap estende a classe AbstractMap para usar uma tabela de hash para armazenar os elementos no mapa. A classe LinkedHashMap mantém as entradas no mapa com base em sua ordem de inserção. O recurso que distingue HashMap e LinkedHashMap um do outro é que Hashmap não mantém a ordem das entradas armazenadas em um mapa. Por outro lado, LinkedHashMap usa uma estrutura de dados híbrida para manter a ordem das entradas em que foram inseridas. No gráfico de comparação abaixo, explorei algumas outras diferenças entre o HashMap e o LinkedHashMap, apenas dê uma olhada.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para ComparaçãoHashMapLinkedHashMap
BasicA ordem de inserção no HashMap não é preservada.A ordem de inserção é preservada no LinkedHashMap.
Estrutura de dadosO HashMap usa o HashTable para armazenar mapas.O LinkedHashMap usa HashTable junto com a Lista vinculada para armazenar o mapa.
Estende / ImplementaO HashMap estende o AbstractMap e implementa a interface Map.O LinkedHashMap estende o Hashmap.
VersãoO HashMap foi introduzido no JDK 2.0.O LinkedHashMap foi introduzido no JDK 4.0.
A sobrecargaComparativamente menos sobrecarga.Comparativamente mais sobrecarga porque ele precisa manter a ordem das entradas do mapa.


Definição de HashMap

HashMap é uma classe usada para criar um mapa. Implementa Mapa Interface. Também estende a AbstractMap para que ele possa usar uma tabela de hash para armazenar as entradas no mapa. As entradas do mapa são uma par em que cada chave está associada ao valor. A chave na entrada é usada para recuperar o valor, portanto, a chave deve ser exclusiva. É por isso que chaves duplicadas não são permitidas no HashMap. Mas a chave em cada entrada do mapa pode ter um tipo diferente, ou seja, as chaves no mapa criadas pelo HashMap podem ser heterogêneas. A estrutura de dados usada pelo HashMap para armazenar um mapa é uma tabela de hash.

A ordem de inserção das entradas no HashMap não é preservada. A inserção de entradas no mapa criado usando o HashMap é baseada no código de hash calculado pelas chaves nas entradas. Se, por engano, você inseriu uma chave duplicada no HashMap, ela substituirá o valor anterior dessa chave pelo novo valor proposto e retornará o valor antigo. Se nenhuma chave duplicada for usada e nenhuma substituição ocorrer, a chave sempre retornará Nulo. Vamos ver como adicionar as entradas ao mapa de hash com o exemplo a seguir.


Hashmap hm = novo Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordânia", 200); System.out.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordânia = 200}

Como no código acima, você pode ver que eu criei um objeto do HashMap e adicionei as entradas usando o método puts. Quando editei o objeto HashMap, as entradas não serão editadas na ordem em que foram inseridas. Portanto, você não pode fingir que a ordem das entradas no HashMap retornará. O HashMap usa todos os métodos da interface Map e da classe AbstractMap e não introduz nenhum novo método; tem seus próprios construtores. A capacidade padrão do mapa de hash é 16 e a taxa de preenchimento padrão é 0.75.

Definição de LinkedHashMap

LinkedHashMap também é um uso de classe para criar um mapa. LinkedHashMap estende o HashMap classe e foi introduzido posteriormente ao HashMap no JDK versão 4.0. Ser a classe filho da classe HashMap LinkedHashMap é exatamente a mesma da classe HashMap, incluindo os construtores e métodos. Porém, o LinkedHashMap difere no sentido de manter a ordem de inserção das entradas no mapa. A estrutura de dados usada pelo LinkedHashMap para armazenar o mapa é lista vinculada e tabela de hash.

Além dos métodos herdados pelo HashMap, o LinkedHashMap apresenta um novo método que é removeEldestEntry (). Este método é usado para remover a entrada mais antiga do mapa. A capacidade padrão do LinkedHashMap é 16 e a taxa de preenchimento padrão é 0,75, que também é semelhante à classe HashMap.

  1. A diferença mais importante é que a ordem de inserção do HashMap é não preservado enquanto a ordem de inserção do LinkedHashMap é preservado.
  2. A estrutura de dados usada pelo HashMap para armazenar os elementos do mapa é Hashtable. Por outro lado, a estrutura de dados usada pelo LinkedHashMap é Lista vinculada e Hashtable.
  3. A classe HashMap se estende AbstractMap classe e implementa o Mapa interface. No entanto, a classe LinkedHashMap é uma classe filho de HashMap A classe LinkedHashMap estende a classe HashMap.
  4. A classe HashMap foi introduzida no JDK 2.0 versão. A classe LinkedHashMap foi introduzida posteriormente em JDK 4.0 versão.
  5. Comparativamente, a classe LinkedHashMap possui mais sobrecarga que o HashMap, pois precisa manter a ordem dos elementos inseridos no mapa.

Conclusão:

O LinkedHashMap deve ser usado apenas quando estivermos preocupados com a sequência dos elementos inseridos no mapa.