Diferença entre HashMap e LinkedHashMap em Java
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.
- Gráfico de comparação
- Definição
- Principais diferenças
- Conclusão
Gráfico de comparação
Base para Comparação | HashMap | LinkedHashMap |
---|---|---|
Basic | A ordem de inserção no HashMap não é preservada. | A ordem de inserção é preservada no LinkedHashMap. |
Estrutura de dados | O HashMap usa o HashTable para armazenar mapas. | O LinkedHashMap usa HashTable junto com a Lista vinculada para armazenar o mapa. |
Estende / Implementa | O HashMap estende o AbstractMap e implementa a interface Map. | O LinkedHashMap estende o Hashmap. |
Versão | O HashMap foi introduzido no JDK 2.0. | O LinkedHashMap foi introduzido no JDK 4.0. |
A sobrecarga | Comparativamente 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 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. 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.
Definição de LinkedHashMap
- 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.
- 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.
- 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.
- A classe HashMap foi introduzida no JDK 2.0 versão. A classe LinkedHashMap foi introduzida posteriormente em JDK 4.0 versão.
- 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.