Clase Java Hashtable
Hashtable es parte del java.util original y es una implementación concreta de Dictionary.
Sin embargo, Hashtable, refactorizado en Java 2, implementa la interfaz Map; por lo tanto, Hashtable ahora está integrado en el marco de colecciones. Es muy similar a la clase HashMap, pero admite sincronización.
Al igual que HashMap, Hashtable almacena pares clave/valor en una tabla hash. Al usar una tabla hash, debes especificar el objeto que se usará como clave, así como el valor que se vinculará a esa clave.
Luego, la clave se procesa mediante hash, y el código hash resultante se utiliza como índice para almacenar el valor en la tabla.
Hashtable define cuatro constructores. El primero es el constructor predeterminado:
Hashtable()
El segundo constructor crea una tabla hash de un tamaño específico:
Hashtable(int size)
El tercer constructor crea una tabla hash de un tamaño específico y especifica la proporción de llenado mediante fillRatio.
La proporción de llenado debe estar entre 0.0 y 1.0, y determina el grado de llenado de la tabla hash antes de que se redimensione.
Hashtable(int size,float fillRatio)
El cuarto constructor crea una tabla hash cuyos elementos de inicialización son los elementos de M.
La capacidad de la tabla hash se establece en el doble de la de M.
Hashtable(Map m)
Además de los métodos definidos en la interfaz Map, Hashtable también define los siguientes métodos:
| N.º | Descripción del método |
|---|---|
| 1 |
void clear( ) Vacía esta tabla hash para que no contenga ninguna clave. |
| 2 |
Object clone( ) Crea una copia superficial de esta tabla hash. |
| 3 |
boolean contains(Object value) Prueba si existe una clave asociada al valor especificado en esta tabla hash. |
| 4 |
boolean containsKey(Object key) Prueba si el objeto especificado es una clave de esta tabla hash. |
| 5 |
boolean containsValue(Object value) Devuelve true si esta Hashtable mapea una o más claves a este valor. |
| 6 |
Enumeration elements( ) Devuelve una enumeración de los valores de esta tabla hash. |
| 7 |
Object get(Object key) Devuelve el valor al que se mapea la clave especificada, o null si este mapeo no contiene ningún mapeo para esta clave. Más precisamente, si este mapeo contiene un mapeo de la clave k al valor v que satisface (key.equals(k)), este método devuelve v; de lo contrario, devuelve null. |
| 8 |
boolean isEmpty( ) Prueba si esta tabla hash no tiene claves mapeadas a valores. |
| 9 |
Enumeration keys( ) Devuelve una enumeración de las claves de esta tabla hash. |
| 10 |
Object put(Object key, Object value) Mapea la clave especificada al valor especificado en esta tabla hash. |
| 11 |
void rehash( ) Aumenta la capacidad de esta tabla hash y la reorganiza internamente para contener y acceder a sus elementos de manera más eficiente. |
| 12 |
Object remove(Object key) Elimina la clave y su valor correspondiente de esta tabla hash. |
| 13 |
int size( ) Devuelve el número de claves en esta tabla hash. |
| 14 |
String toString( ) Devuelve una representación en cadena de este objeto Hashtable, en forma de un conjunto de entradas entre paréntesis, separadas por el carácter ASCII ', ' (coma y espacio). |
Ejemplo
El siguiente programa ilustra varios métodos compatibles con esta estructura de datos:
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"));
}
}
El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:
Qadir: -19.08 Zara: 3434.34 Mahnaz: 123.22 Daisy: 99.22 Ayan: 1378.0 Zara's new balance: 4434.34
Otras extensiones
Estructuras de datos de Java