Classe de hashtable
Hashtable herda a interface do mapa e implementa uma tabela de hash com um mapeamento de valor-chave. Qualquer objeto não nulo pode ser usado como chave ou valor.
Use put (chave, valor) para adicionar dados, usar get (chave) para recuperar dados. A sobrecarga de tempo dessas duas operações básicas é constante.
A hashtable ajusta o desempenho através da capacidade inicial e dos parâmetros do fator de carga. Geralmente, o fator de carga padrão 0,75 pode alcançar melhor o equilíbrio de tempo e espaço. Aumentar o fator de carga pode economizar espaço, mas o tempo de pesquisa correspondente aumentará, o que afetará operações como GET e PUT.
Um exemplo simples de usar uma hashtable é o seguinte: Coloque 1, 2 e 3 em uma hashtable, e suas chaves são "um", "dois", "três", respectivamente:
Hashtable números = new hashtable (); números.put ("um", novo inteiro (1)); números.put ("dois", novo número inteiro (2)); números.put ("três", novo número inteiro (3));Para retirar um número, como 2, use a tecla correspondente:
Número inteiro n = (inteiro) números.get ("dois"); system.out.println ("dois =" + n);Como um objeto como chave determinará a posição do valor correspondente calculando sua função de hash, qualquer objeto como uma chave deve implementar os métodos HashCode e é igual a. Os métodos HashCode e Equals herdam do objeto da classe raiz. Se você usar uma classe personalizada como chave, tenha muito cuidado. De acordo com a definição da função de hash, se os dois objetos forem iguais, ou seja, obj1.equals (obj2) = true, seu código de hash deverá ser o mesmo, mas se os dois objetos forem diferentes, seus códigos de hash podem não ser diferentes. Se os códigos de hash de dois objetos diferentes forem iguais, esse fenômeno será chamado de conflito. O conflito aumentará a sobrecarga de tempo da operação da tabela de hash. Portanto, tente definir o método hashcode () para acelerar a operação da tabela de hash.
Se o mesmo objeto tiver códigos de hash diferentes, a operação na tabela de hash terá resultados inesperados (o método GET esperado retorna nulo). Para evitar esse problema, você só precisa se lembrar de uma coisa: você deve reescrever o método Equals e Hashcode ao mesmo tempo, em vez de apenas escrever um deles.
A hashtable é sincronizada.
Classe Hashmap
O hashmap é semelhante ao hashtable, a diferença é que o hashmap é assíncrono e permite nulo, ou seja, valor nulo e chave nula. No entanto, quando o hashmap é considerado uma coleção (o método valores () pode retornar uma coleção), seu tempo de suboperação iterativo é proporcional à capacidade do hashmap. Portanto, se o desempenho das operações de iteração for muito importante, não defina a capacidade de inicialização do hashmap para ser muito alta ou o fator de carga é muito baixo.
Resumir