Diferença entre HashMap e Hashtable em Java
Contente
O HashMap e Hashtable, ambos são usados para representar um grupo de objetos representados em
Vamos ver o gráfico de comparação mostrado abaixo para aprender mais algumas diferenças entre o HashMap e o Hashtable.
- Gráfico de comparação
- Definição
- Principais diferenças
- Semelhanças
- Conclusão
Gráfico de comparação
Base para Comparação | HashMap | Hashtable |
---|---|---|
Implementar / Estender | A classe HashMap implementa a interface Map e estende uma classe AbstractMap. | O Hashtable estende a classe Dictionary Legacy, mas foi reprojetado e agora também implementa a interface Map. |
Sincronização | O HashMap não está sincronizado e, portanto, o objeto HashMap não é seguro para threads. | O Hashtable é sincronizado e, portanto, o objeto do Hashtable é seguro para threads. |
Chaves / Valor | Uma chave pode retornar o Nulo apenas uma vez, mas um valor pode retornar Nulo a qualquer número de vezes. | Uma chave não pode retornar Nulo, pois é usada para obter o código de hash que será usado como um índice da tabela de hash, nem um valor pode retornar Nulo. |
Capacidade inicial padrão | A capacidade inicial padrão do HashMap é 16. | A capacidade inicial padrão do Hashtable é 11. |
Atravessando | O HashMap é percorrido pelo Iterator. | Como a classe Map, o Hashtable também não suporta diretamente o Iterator para atravessar e, portanto, ele usa o Enumerator. |
Definição de HashMap
HashMap é uma classe que implementa o Mapa interface e estende o AbstractMap A classe usa a tabela de hash. O objeto do HashMap refere-se a uma coleção / conjunto de / * K representa a chave e V representa o valor * / class HashMap O primeiro construtor é um construtor padrão que inicializa um objeto vazio do HashMap com uma capacidade padrão de 16 e taxa de preenchimento padrão de 0,75. O segundo construtor inicializa o mapa de hash com o valor de m. O terceiro construtor cria um mapa de hash com a capacidade inicial correspondente ao valor fornecido no argumento "capacidade". O quarto construtor inicializa o mapa de hash com uma capacidade e uma proporção de preenchimento fornecidas nos parâmetros. vamos aprender agora como alimentar as entradas em um mapa de hash. 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} No código acima, você pode ver que eu criei um objeto HashMap vazio hm com capacidade inicial padrão e taxa de preenchimento padrão. Em seguida, inseri quatro entradas no mapa de hash usando o método put (K, V) que mapeia a chave para o valor. Você pode observar que as entradas não são editadas em uma sequência que você as alimenta porque a ordem de inserção não é fixa. Agora, considere um caso em que você já tenha uma entrada Hashtable é uma classe que estende o Dicionário classe que é uma classe herdada e é reengenharia para implementar o Mapa interface. O Hashtable usa a tabela de hash como sua estrutura de dados. O Hashtable é semelhante ao HashMap, pois aqui também o objeto do Hashtable se refere à coleção de entradas em que cada entrada é um par de / * K especifica a chave e V especifica o valor associado à chave * / class Hashtable No código acima, o primeiro construtor é um construtor padrão que cria um objeto vazio de uma classe Hashtable, seu tamanho padrão é 11 e a taxa de preenchimento padrão é 0,75. O segundo construtor cria uma tabela de hash com o tamanho correspondente ao valor fornecido no parâmetro "tamanho". O terceiro construtor cria uma tabela de hash com um tamanho e uma proporção de preenchimento fornecidos no parâmetro O quarto construtor inicializa a tabela de hash com o valor m. Vamos agora aprender a inserir o Hashtable ht = new Hashtable (); ht.put (novo hashCode (2), 275); ht.put (novo hashCode (12), 250); ht.put (novo hashCode (16), 150); ht.put (novo hashCode (8), 200); System.out.ln (ht); / * saída * / {12 = 250, 16 = 150,2y = 275, 8 = 200} No código acima, criei um objeto vazio do Hashtable e inseri quatro entradas usando o método put (). Dentro do método put, chamei hashCode () que calcula e retorna o valor do código hash, que atuará como o valor do índice do objeto de entrada. Como você pode ver, não mencionei o tamanho da tabela de hash; portanto, por padrão, será 11. Aqui também, a ordem de inserção não é preservada e, portanto, quando as entradas ed não aparecem em sequência, elas são alimentadas. O HashMap tem melhor desempenho, pois seus objetos não são sincronizados e vários threads podem operar nele ao mesmo tempo e, portanto, é mais rápido que o Hashtable.Definição de Hashtable
Semelhanças:
Conclusão: