Arrays Asociativos

arrays asociativos (Hashtables) Una Hashtable es una estructura Java de tipo diccionario que nos permite almacenar eleme

Views 134 Downloads 20 File size 165KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

arrays asociativos (Hashtables) Una Hashtable es una estructura Java de tipo diccionario que nos permite almacenar elementos identificados por pares clave/valor de una forma muy sencilla. De igual manera, nos permite una recuperación atendiendo a las claves insertadas. La estructura Hashtable está definida dentro del paquete java.util. Por ello, lo primero que haremos, será el importar dicho paquete.

1. import java.util.Hashtable;

El constructor de Hashtable

1. Hashtable paises = new Hashtable();

Para ir añadiendo elementos a la Hashtable.put(), al cual se le pasan la clave y el valor.

1. paises.put("ES", "España"); 2. paises.put("UK", "Reino Unido"); 3. paises.put("US", "Estados Unidos"); 4. paises.put("FR", "Francia");

Y si queremos recuperar alguna clave de la Hashtable.get()

1. String clave = "US"; 2. System.out.println("El valor de la clave " + clave + " es " + paises.get(clave));

Cómo trabajar con arrays asociativos (Hashtables) en Java Java Añadir comentarios

Una estructura de datos muy útil para todo tipo de aplicaciones es el array asociativo, que es un conjunto de pares (clave, valor). Muchos lenguajes, como PHP o Perl (con variables de tipo ”hash”) incluyen esta funcionalidad. También Java dispone de arrays asociativos, que se implementan en forma de objetos “Hashtable“.

Declaración e inicialización de una variable de tipo Hashtable En Java, el Hashtable es una clase, por lo que se crea mediante una llamada al método “new”. Por otra parte, es conveniente definir los tipos de datos de las claves y valores que contiene. Por ejemplo: import java.util.Hashtable; Hashtable capitales = new Hashtable(); capitales.put("España","Madrid"); capitales.put("Argentina","Buenos Aires");

Añadir, eliminar y consultar elementos de una Hashtable Como hemos visto en el ejemplo del apartado anterior, para añadir elementos a la Hashtable se utiliza el método “put”. Otros métodos para el manejo y consulta de Hashtables son: remove(clave) – Eliminar un par (clave, valor) identificado por su clave get(clave) – Obtener el valor asociado a una clave containsKey(clave) – Determinar si una clave existe en la hashtable contains(valor), containsValue(valor) – Estos dos métodos son equivalentes, y devuelven true si el argumento existe en la tabla como un valor asociado a una clave. A continuación vemos un ejemplo de uso de estos métodos: // Elimina una entrada de la hashtable capitales.remove("España"); // Obtener el número de entradas en la hashtable System.out.println("Tamaño de la tabla de capitales: " + capitales.size()); // Consultar la existencia de una clave en la hashtable String pais = "Argentina"; if (capitales.containsKey(pais)) { System.out.println("La capital de " + pais + " es: " + capitales.get(pais)); } else { System.out.println("La tabla no contiene la capital de " + pais); }

Recorrer las entradas de una Hashtable El método keys() devuelve un objeto de la clase Enumeration que contiene todas las claves de la tabla. Con él, podemos recorrer las entradas existentes en la misma: java.util.Enumeration claves = capitales.keys(); while( claves.hasMoreElements() ) { Object clave = claves.nextElement(); Object valor = capitales.get(clave); System.out.println("Pais: "+clave.toString()+", capital: }

" +valor.toString());

Del mismo modo, existe el método elements() que devuelve un objeto de la clase Enumeration que contiene todos los valores de la tabla. También hay un método values(), que devuelve un objeto de la clase Collection con todos los valores de la tabla.

Recorrer ordenadamente las entradas de una Hashtable El método keySet() devuelve un objeto de la clase Set que contiene todas las claves de la Hashtable. Para recorrer la Hashtable en orden de clave ascencente, podemos convertir este Set en un Array, y ordenarlo con el método sort():

String[] claves = (String[]) capitales.keySet().toArray(new String[0]); java.util.Arrays.sort(claves); for(String clave : claves) { System.out.println(clave + " : " + capitales.get(clave)); }