Iterar HashMap – JAVA

La estructuras del tipo HashMap permiten almacenar contenido relacionado de la forma LLAVE –> VALOR. Una estructura de este tipo es útil cuando existen referencias a valores de los cuales se desea saber su correspondencia con otro valor. Evitando el uso de las estructuras IF y SWITCH.

Aunque presenta  todas estas ventajas uno de sus inconvenientes, muchas de las veces, es el iterar sus elementos uno a uno. A continuación el proceso a seguir ::

Creamos un HashMap para almacenar una llave de tipo caracter y su valor entero.

HashMap<String, Integer> ht = new HashMap<String, Integer>();

Si poseemos elementos en ella podremos iterarlos uno a uno, haciendo uso de un FOREACH en base a Map.Entry para ello ::

for (Map.Entry<String, Integer> elemento : ht.entrySet()) {
     System.out.println(elemento.getKey() + " _ " + elemento.getValue());
}

Hay que recordar que el elemento a iterar deberá ser de el mismo tipo que el HashMap, en este caso <String, Integer>. Aquí un proyecto en NetBeans implementando esta utilidad.

Saludos.

Anuncios

Encadenamiento Hacia Delante (EHD)

El encadenamiento hacia delante aplicado a la lógica de predicados permite inferir conocimiento (o comprobarlo) mediante la utilización de varias reglas predefinidas. Aquí pueden encontrar un programa desarrollado completamente en JAVA bajo NetBeans.

El mismo se basa en un conjunto de hechos y reglas que son dados como entrada a partir de los cuales se realiza interacciones sucesivas hasta que no se pueda inferir más premisas.

Espero les resulte útil.

 

Saludos.

PD: El programa utiliza un Look&Feel de Substance, por tanto hay que importarlo primero, se encuentra en la misma carpeta del proyecto.

 

Encriptación MD5 – JAVA

Más de una vez se suele necesitar cifrar información sensible como contraseñas o códigos de aplicación. En esta ocasión realizaré la encriptación basada en MD5. Pero de forma recursiva 😉 De tal forma que tendremos la siguiente fórmula de encriptación:

MD5(MD5(MD5(PASSWORD) + MD5(SEMILLA)))

La que utiliza una semilla para garantizar más aún nuestros datos. Y como era de suponer JAVA posee una clase que nos permite aplicar MD5 a una cadena, la misma que es MessageDigest. Para ello:

Especificamos la Instancia del Algoritmo (también podemos hacerlo con SHA pero no es el caso)

MessageDigest md = MessageDigest.getInstance(“MD5”);

Indicamos los caracteres contenidos en la clave y su longitud.

md.update(clave.getBytes(“UTF-8”), 0, clave.length());

Debido a que la clase MessageDigest devuelve el valor como un vector de bytes, deberemos realizar el siguiente proceso para transformar bytes–>BigInteger–>String

byte[] bt = md.digest();

BigInteger bi = new BigInteger(1, bt);

String md5 = bi.toString(16);  //16 por hexadecimal.

Con este principio lo que se debe hacer es realizar las llamadas a un método en el orden correcto para conseguir nuestro objetivo del principio. Aquí pueden encontrar la implementación en un proyecto de NetBeans con una interfaz gráfica.
Saludos.

qmarqeva