A comparação entre Hashmap e Hashtable é uma pergunta comum nas entrevistas de Java, que é usada para testar se os programadores podem usar as classes de coleta corretamente e se podem se adaptar a várias idéias para resolver problemas. Como o Hashmap funciona, a comparação do ArrayList com o Vector e essa pergunta é a pergunta mais clássica sobre as estruturas de coleção Java. Hashtable é uma aula de coleta desatualizada que existe na API Java há muito tempo. Foi reescrito no Java 4 e implementou a interface do mapa, por isso se tornou parte da estrutura de coleção Java. Hashtable e Hashmap são muito fáceis de perguntar nas entrevistas de Java e até se tornaram as perguntas mais comuns a serem testadas em entrevistas com a estrutura de coleção; portanto, não se esqueça de preparar essa pergunta antes de participar de qualquer entrevista em Java.
Neste artigo, veremos não apenas a diferença entre hashmap e hashtable, mas também as semelhanças entre eles.
A diferença entre hashmap e hashtable
Tanto o hashmap quanto as interfaces de mapa de implementação de hashtable, mas antes de decidir qual usar, você deve primeiro descobrir a diferença entre eles. As principais diferenças são: segurança de encadeamentos, sincronização e velocidade.
Alguns termos importantes a serem observados:
1) Sycronized significa que apenas um thread pode alterar a hashtable por vez. Ou seja, qualquer encadeamento deve primeiro obter o bloqueio de sincronização quando deseja atualizar a hashtable. Outros threads devem esperar até que o bloqueio de sincronização seja liberado antes que possam obter o bloqueio de sincronização e atualizar a hashtable novamente.
2) Seguro de falhas e iterador de iterador estão relacionados. Se um objeto de coleção criar um iterador ou listiterator e, em seguida, outros threads tentarem alterar o objeto de coleta "estruturalmente", uma exceção concorrente de exceção da exceção será lançada. Mas outros threads podem alterar o objeto de coleta através do método set () é permitido porque isso não altera a coleção "estruturalmente". No entanto, se a estrutura tiver sido alterada e o método set () for chamado, uma exceção ilegalArgumentException será lançada.
3) Alterações estruturais referem -se à exclusão ou inserção de um elemento, que afetará a estrutura do mapa.
Podemos fazer sincronização de hashmap?
O hashmap pode ser sincronizado através da seguinte declaração:
Mapa m = coleções.synchronizemap (hashmap);
para concluir
Existem várias diferenças principais entre hashtable e hashmap: segurança e velocidade do thread. Use hashtable somente quando precisar de segurança completa do thread e, se você usar o Java 5 ou superior, use sim concorrente.
Link original: Javarevisited Tradução: Importnew.com - Tang Xiaojuan Link de tradução: http://www.importnew.com/7010.html