Anuncios

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.

Anuncios

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
Anuncios

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
Anuncios

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"));
        }
}
Anuncios

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.

Anuncios

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.

Anuncios

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.00