A tabela de hash também é conhecida como lista de distribuição, que é uma estrutura de classe de coleta usada para armazenar objetos de grupo.
O que é uma tabela de hash
Tanto as matrizes quanto os vetores podem armazenar objetos, mas a posição de armazenamento do objeto é aleatória, ou seja, não há conexão necessária entre o próprio objeto e sua posição de armazenamento. Quando você deseja encontrar um objeto, você só pode comparar com cada elemento em uma determinada ordem (como pesquisa sequencial ou dois pontos). ser significativamente reduzido.
Um método de armazenamento eficaz é que ele não se compara a outros elementos, e o registro que pode ser obtido por vez pode ser obtido. Isso requer estabelecer uma relação correspondente específica entre a posição de armazenamento do objeto e o atributo -chave do objeto (definido como k) para corresponder a cada objeto correspondente a uma posição de armazenamento exclusiva. Ao pesquisar, basta calcular o valor de f (k) com base nos principais atributos do objeto a ser verificado. Se este objeto estiver na coleção, ele deve estar na posição de armazenamento F (k), portanto, não é necessário comparar com outros elementos no conjunto. Chamado esse relacionamento correspondente f como um método de hash, e a tabela estabelecida de acordo com essa idéia é uma tabela de hash.
O Java usa a categoria Hashtable para alcançar a tabela de hash.
• Capacidade: a capacidade da hashtable não é fixa e a capacidade do objeto também pode aumentar automaticamente.
• Chave (chave): Cada objeto de armazenamento requer uma palavra -chave. Todas as palavras -chave em uma hashtable são únicas.
• Código de hash: se você deseja armazenar o objeto para hashtable, precisará mapear a tecla Palavra -chave para um número inteiro para se tornar o código da chave de hash.
• Item: Cada um dos hashtable possui dois domínios, que são a chave do domínio -chave e o valor do domínio do valor (objeto de armazenamento). A chave e o valor podem ser um objeto de tipo de objeto, mas não pode estar vazio.
• Fator de carga: o fator de enchimento é representado pela plenitude da tabela de hash e seu valor é igual ao comprimento do número de elementos do que a tabela de hash acima.
Uso da tabela de hash
Existem três formas principais de métodos de construção para tabelas de hash:
Hashtable ();
Hashtable (capacidade int);
Hashtable (capacidade int, float LoadFactor)
Os principais métodos das tabelas de hash são mostrados na Tabela 8-6.
Tabela 8-6 Métodos frequentemente definidos pela definição da tabela de hash
método | Função |
---|---|
vazio claro () | Re -definir e limpar a tabela de hash |
Booleano contém (valor do objeto) | Determine se a tabela de hash contém um determinado objeto, se houver um retorno verdadeiro, caso contrário, o falso será retornado |
Boolean ContainsKey (chave do objeto) | Determine se a tabela de hash contém uma determinada palavra -chave, se houver um retorno ao verdadeiro, caso contrário, o falso será devolvido |
Boolean isEmpty () | Confirme se a tabela de hash está vazia, se você retornar ao TRUE, caso contrário, o falso será devolvido |
Objeto get (chave do objeto) | Objeta para obter as palavras -chave correspondentes, se não houver retorno nulo |
Void Rehash () | Não importa como a tabela de hash de expansão pode salvar mais elementos. |
Objeto Put (chave do objeto, valor do objeto) | Salve o objeto na tabela de hash com uma determinada palavra -chave. |
Remova do objeto (chave do objeto) | Exclua o objeto correspondente à fase da palavra -chave da tabela de hash, se o objeto não retornar ao NULL |
int size () | De volta ao tamanho da tabela de hash |
String ToString () | Converter o conteúdo da tabela de hash em uma string |
A criação da tabela de hash também pode ser implementada através do novo operador. Sua declaração é:
Havetable tem = new hashtable ();
exemplo:
[Exemplo 8-12] Travessing de tabelas de hash.
// ************ EP8_12.Java *********************************** **************************************************** ********************* IMPRESSÃO Java.util.*; Has.put ("One", Novo Inteiro (1)); ", novo duplo (12.3)); set s = has.KeySet (); para (iterador <string> i = s.iterator (); i.hasnext ();) {System.out.println (has.get ( I.Next ()));}}}
Execute os resultados:
21312.3