Java - a classe Hashtable
Hashtable fazia parte do java.util original e é uma implementação concreta de um Dicionário.
No entanto, o Java 2 reprojetou o Hashtable para que também implemente a interface Map. Portanto, o Hashtable agora está integrado à estrutura de coleções. É semelhante ao HashMap, mas é sincronizado.
Como o HashMap, o Hashtable armazena pares de chave / valor em uma tabela hash. Ao usar um Hashtable, você especifica um objeto que é usado como uma chave e o valor que deseja vincular a essa chave. A chave é então hash, e o código hash resultante é usado como o índice no qual o valor é armazenado na tabela.
A seguir está a lista de construtores fornecida pela classe HashTable.
Sr. Não | Construtor e descrição |
---|---|
1 | Hashtable( ) Este é o construtor padrão da tabela de hash que instancia a classe Hashtable. |
2 | Hashtable(int size) Este construtor aceita um parâmetro inteiro e cria uma tabela hash que tem um tamanho inicial especificado pelo tamanho do valor inteiro. |
3 | Hashtable(int size, float fillRatio) Isso cria uma tabela hash que tem um tamanho inicial especificado por tamanho e uma taxa de preenchimento especificada por fillRatio. Essa proporção deve estar entre 0,0 e 1,0 e determina o quão cheia a tabela de hash pode ser antes de ser redimensionada para cima. |
4 | Hashtable(Map < ? extends K, ? extends V > t) Isso constrói um Hashtable com os mapeamentos fornecidos. |
Além dos métodos definidos pela interface Map, Hashtable define os seguintes métodos -
Sr. Não | Método e Descrição |
---|---|
1 | void clear( ) Redefine e esvazia a tabela de hash. |
2 | Object clone( ) Retorna uma duplicata do objeto de chamada. |
3 | boolean contains(Object value) Retorna verdadeiro se algum valor igual ao valor existir na tabela de hash. Retorna falso se o valor não for encontrado. |
4 | boolean containsKey(Object key) Retorna verdadeiro se alguma chave igual à chave existir na tabela hash. Retorna falso se a chave não for encontrada. |
5 | boolean containsValue(Object value) Retorna verdadeiro se algum valor igual ao valor existir na tabela de hash. Retorna falso se o valor não for encontrado. |
6 | Enumeration elements( ) Retorna uma enumeração dos valores contidos na tabela hash. |
7 | Object get(Object key) Retorna o objeto que contém o valor associado à chave. Se a chave não estiver na tabela de hash, um objeto nulo será retornado. |
8 | boolean isEmpty( ) Retorna verdadeiro se a tabela hash estiver vazia; retorna falso se contiver pelo menos uma chave. |
9 | Enumeration keys( ) Retorna uma enumeração das chaves contidas na tabela hash. |
10 | Object put(Object key, Object value) Insere uma chave e um valor na tabela de hash. Retorna null se a chave ainda não estiver na tabela de hash; retorna o valor anterior associado à chave se a chave já estiver na tabela hash. |
11 | void rehash( ) Aumenta o tamanho da tabela de hash e refaz o hash de todas as suas chaves. |
12 | Object remove(Object key) Remove a chave e seu valor. Retorna o valor associado à chave. Se a chave não estiver na tabela de hash, um objeto nulo será retornado. |
13 | int size( ) Retorna o número de entradas na tabela hash. |
14 | String toString( ) Retorna a string equivalente a uma tabela hash. |
Exemplo
O programa a seguir ilustra vários dos métodos suportados por esta estrutura de dados -
import java.util.*;
public class HashTableDemo {
public static void main(String args[]) {
// Create a hash map
Hashtable balance = new Hashtable();
Enumeration names;
String str;
double bal;
balance.put("Zara", new Double(3434.34));
balance.put("Mahnaz", new Double(123.22));
balance.put("Ayan", new Double(1378.00));
balance.put("Daisy", new Double(99.22));
balance.put("Qadir", new Double(-19.08));
// Show all balances in hash table.
names = balance.keys();
while(names.hasMoreElements()) {
str = (String) names.nextElement();
System.out.println(str + ": " + balance.get(str));
}
System.out.println();
// Deposit 1,000 into Zara's account
bal = ((Double)balance.get("Zara")).doubleValue();
balance.put("Zara", new Double(bal + 1000));
System.out.println("Zara's new balance: " + balance.get("Zara"));
}
}
Isso produzirá o seguinte resultado -
Resultado
Qadir: -19.08
Zara: 3434.34
Mahnaz: 123.22
Daisy: 99.22
Ayan: 1378.0
Zara's new balance: 4434.34