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