Java: la clase Hashtable
Hashtable era parte del java.util original y es una implementación concreta de un diccionario.
Sin embargo, Java 2 rediseñó Hashtable para que también implemente la interfaz Map. Por lo tanto, Hashtable ahora está integrado en el marco de colecciones. Es similar a HashMap, pero está sincronizado.
Al igual que HashMap, Hashtable almacena pares clave / valor en una tabla hash. Cuando usa una tabla hash, especifica un objeto que se usa como clave y el valor que desea vincular a esa clave. A continuación, se aplica un hash a la clave y el código hash resultante se utiliza como índice en el que se almacena el valor dentro de la tabla.
A continuación se muestra la lista de constructores proporcionada por la clase HashTable.
No Señor | Constructor y descripción |
---|---|
1 | Hashtable( ) Este es el constructor predeterminado de la tabla hash que instancia la clase Hashtable. |
2 | Hashtable(int size) Este constructor acepta un parámetro entero y crea una tabla hash que tiene un tamaño inicial especificado por el tamaño del valor entero. |
3 | Hashtable(int size, float fillRatio) Esto crea una tabla hash que tiene un tamaño inicial especificado por tamaño y una proporción de relleno especificada por fillRatio. Esta proporción debe estar entre 0.0 y 1.0, y determina qué tan llena puede estar la tabla hash antes de que se redimensione hacia arriba. |
4 | Hashtable(Map < ? extends K, ? extends V > t) Esto construye una tabla hash con las asignaciones dadas. |
Además de los métodos definidos por la interfaz del mapa, Hashtable define los siguientes métodos:
No Señor | Método y descripción |
---|---|
1 | void clear( ) Reinicia y vacía la tabla hash. |
2 | Object clone( ) Devuelve un duplicado del objeto que invoca. |
3 | boolean contains(Object value) Devuelve verdadero si existe algún valor igual al valor dentro de la tabla hash. Devuelve falso si no se encuentra el valor. |
4 | boolean containsKey(Object key) Devuelve verdadero si existe alguna clave igual a la clave dentro de la tabla hash. Devuelve falso si no se encuentra la clave. |
5 | boolean containsValue(Object value) Devuelve verdadero si existe algún valor igual al valor dentro de la tabla hash. Devuelve falso si no se encuentra el valor. |
6 | Enumeration elements( ) Devuelve una enumeración de los valores contenidos en la tabla hash. |
7 | Object get(Object key) Devuelve el objeto que contiene el valor asociado con la clave. Si la clave no está en la tabla hash, se devuelve un objeto nulo. |
8 | boolean isEmpty( ) Devuelve verdadero si la tabla hash está vacía; devuelve falso si contiene al menos una clave. |
9 | Enumeration keys( ) Devuelve una enumeración de las claves contenidas en la tabla hash. |
10 | Object put(Object key, Object value) Inserta una clave y un valor en la tabla hash. Devuelve nulo si la clave aún no está en la tabla hash; devuelve el valor anterior asociado con la clave si la clave ya está en la tabla hash. |
11 | void rehash( ) Aumenta el tamaño de la tabla hash y repite todas sus claves. |
12 | Object remove(Object key) Elimina la clave y su valor. Devuelve el valor asociado con la clave. Si la clave no está en la tabla hash, se devuelve un objeto nulo. |
13 | int size( ) Devuelve el número de entradas en la tabla hash. |
14 | String toString( ) Devuelve la cadena equivalente a una tabla hash. |
Ejemplo
El siguiente programa ilustra varios de los métodos admitidos por 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"));
}
}
Esto producirá el siguiente resultado:
Salida
Qadir: -19.08
Zara: 3434.34
Mahnaz: 123.22
Daisy: 99.22
Ayan: 1378.0
Zara's new balance: 4434.34