Bienvenidos sean a este post, hoy hablaremos sobre una clase perteneciente a java.util que implementaba a Dictionary pero con el tiempo tambien se le agrego la implementacion de Map dando como resultado una clase muy similar a HashMap pero que trabaja de forma sincronica, trabaja como HashMap lo que significa que utiliza un forma de almacenar la informacion por medio de clave/valor en una tabla hash, el valor de la clave es «hashed» y este se almacena en una tabla el cual va a estar relacionado con el valor.
Los constructores disponibles son los siguientes:
- Hashtable(), este es el constructor por defecto
- Hashtable(int tam), con este podemos crear una tabla hash con un valor inicial informado en los atributos
- Hashtable(int tam, float relleno), es similar al anterior porque define un tamaño inicial pero a su vez tiene un ratio de relleno, el valor de relleno debe ir entre 0.0 y 1.0, este sera utilizado para considerar en que grado debe estar para aumentar su tamaño
- Hashtable(Map < ? extends C, ? extends V > t), construye la tabla en base al mapeo informado
Con el listado de nuestros constructores pasemos a ver algunos metodos disponibles:
- void clear(), resetea y limpia la tabla hash
- Object clone(), devuelve un duplicado del objeto invocador
- boolean contains(Objeto valor), devuelve verdadero si el valor informado es igual a alguno de la tabla de lo contrario devuelve falso
- boolean containsKey(Objeto clave), devuelve verdadero si la clave informada se encuentra en la tabla de lo contrario devuelve falso
- boolean containsValue(Objeto valor), devuelve verdadero si el valor informado se encuentra en la tabla de lo contrario devuelve falso
- Enumeration elements(), devuelve una enumeracion de los elementos de la tabla
- Object get(Object key), devuelve el valor asociado a la clave informada en caso contrario devuelve un valor nulo
- boolean isEmpty(), devuelve verdadero en caso de que la tabla este vacia y si posee aunque sea un elemento (clave o valor) devuelve falso
- Enumeration keys(), devuelve una enumeracion de todas las claves unicamente de la tabla
- Object put(Object clave, Object valor), ingresa una clave y un valor a la tabla, en caso de la clave no estar preparada devuelve un valor nulo y en caso de existir alguna devuelve el valor previo
- void rehash(), incrementa el tamaño de la tabla y resetea las valores hash de las claves
- Object remove(Object clave), remueve la clave y el valor de la clave informada, devuelve el valor asociado y en caso de no existir devuelve un valor nulo
- int size(), devuelve el numero de entradas en una tabla
- String toString(), devuelve el equivalente en cadena de una tabla hash
Pasemos a ver un ejemplo para entender los conceptos antes explicados:
HashTableDemo.java:
import java.util.*;
public class HashTableDemo
{
public static void main(String[] args)
{
Hashtable balance = new Hashtable();
Enumeration nombres;
String cdn;
double bal;
balance.put("Martin", new Double(9999.99));
balance.put("Marta", new Double(11011.11));
balance.put("Enzo", new Double(8976.12));
balance.put("Javier", new Double(7707.55));
balance.put("Ariel", new Double(9190.90));
nombres = balance.keys();
while(nombres.hasMoreElements())
{
cdn = (String) nombres.nextElement();
System.out.println(cdn + ": " + balance.get(cdn));
}
System.out.println();
bal = ((Double) balance.get("Martin")).doubleValue();
balance.put("Martin", new Double(bal + 1000));
System.out.println("Nuevo balance de Martin: "
+ balance.get("Martin"));
}
}
En este caso primero crearemos una tabla hash llamada balance, luego una variable de tipo Enumeration llamada nombres, una variable de tipo String llamada cdn y por ultimo una de tipo double llamada bal, luego por medio del metodo put() agregaremos cinco individuos a nuestra tabla llamada balance, donde indicaremos los nombres y el valor de su balance, una vez cargados llenaremos a nombres con los valores de las claves por medio del metodo keys() para despues por medio de un while chequearemos si nombres tiene elementos y en el bucle mostraremos los mismos con el valor de balance asociado, por ultimo obtendremos el valor asociado a Martin el cual lo convertiremos a un valor de tipo Double, despues lo volvermos a ingresar pero a este valor lo incrementaremos en 1000 y por ultimo veamos como quedo finalmente, podemos compilar y ejecutar el programa para ver su salida de la siguiente forma:
tinchicus@dbn001vrt:~/programacion/java/codigo$ java HashTableDemo
Enzo: 8976.12
Marta: 11011.11
Ariel: 9190.9
Martin: 9999.99
Javier: 7707.55
Nuevo balance de Martin: 10999.99
tinchicus@dbn001vrt:~/programacion/java/codigo$
Observen como no ordeno las claves y valores como los ingresamos pero si nos permitio mostrarlas y buscar una clave e incrementarla correctamente.
En resumen, hoy hemos visto la clase HashTable, hemos visto sus similitudes con otras clase como son Dictionary y Map, hemos visto los constructores, algunos metodos disponibles y un ejemplo de como poder utilizarlo espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.


Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.50