Con la clase Java HashMaps, se pueden guardar datos en pares clave-valor. Esto no solo facilita la re­cu­pe­ra­ción y el ma­n­te­ni­mie­n­to de una lista, sino que también ofrece numerosas opciones de acceso. Te pre­se­n­ta­re­mos los métodos más im­po­r­ta­n­tes.

¿Qué son los HashMaps en Java?

Existen distintos métodos para almacenar y recuperar datos. De­pe­n­die­n­do del uso que se le quiera dar, usar uno u otro tipo de al­ma­ce­na­mie­n­to puede resultar más co­n­ve­nie­n­te. En muchos casos, optar por la clase HashMap de Java puede ser la mejor solución. A di­fe­re­n­cia de otros métodos, esta clase almacena los datos como pares clave-valor, es decir, a cada clave se le asigna exac­ta­me­n­te un valor. Para recuperar el valor, basta con usar la clave co­rre­s­po­n­die­n­te. Las claves y los valores pueden ser tipos de datos muy di­fe­re­n­tes, como cadenas, números u otros objetos.

La clase HashMap de Java tiene, por tanto, varias ventajas. En primer lugar, permite realizar una búsqueda rápida dentro del marco del lenguaje de pro­gra­ma­ción. Al mismo tiempo, el enfoque clave-valor evita que a una misma clave se le asignen múltiples valores y de esta forma, se eluden las du­pli­ca­cio­nes. Solo los objetos se pueden incluir varias veces con claves di­fe­re­n­tes. En lo que respecta al re­n­di­mie­n­to, este tipo de al­ma­ce­na­mie­n­to y búsqueda también resulta ventajoso si se compara, por ejemplo, con las listas rígidas, que son mucho menos flexibles. Por ello, las bases de datos claves-valor siguen este principio. A co­n­ti­nua­ción, descubre cómo crear HashMaps en Java y uti­li­zar­los para tus pro­pó­si­tos.

¿Cómo se crean?

Para crear un nuevo HashMap en Java, primero hay que importar la clase. Para ello, usa el comando Java import. A co­n­ti­nua­ción, puedes crear el mapa. Para ello, escribe:

import java.util.HashMap;
HashMap<String, String> nameDerHashMap = new HashMap<String, String> ();
java

Los dos tipos de datos, separados por una coma (en este caso String, String), son la clave y el valor.

Crear nuevo HashMap en Java

Para poder mostrar mejor el fu­n­cio­na­mie­n­to de Hashmap en Java, se presenta un caso práctico: una empresa quiere guardar una lista de clientes que pueda consultar en cualquier momento. Se necesita, por un lado, el nombre del cliente y, por otro, un número de cliente. Aunque el número de cliente (se co­rre­s­po­n­de con la clave) siempre es único, en teoría podrían existir varios clientes con el mismo nombre (se al­ma­ce­na­ría como valor). El número se almacena como interger y los nombres como strings. En Java, HashMap se vería:

import java.util.HashMap;
public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	}
}
java

Incluir elementos

Aunque ya tienes el HashMap de Java, se encuentra vacío. Para añadir nuevos pares clave-valor, se usa el método put(). A co­n­ti­nua­ción el ejemplo:

public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, "Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(kundenliste);
	}
}
java

Con el comando System.out.println se imprime la lista de clientes:

{1077=Manolo Rodríguez, 15312=Pepe García, 73329=María Pérez}
java

Acceso a elementos

Aunque ya se dispone de una lista de clientes a la que teó­ri­ca­me­n­te se le pueden añadir muchas más entradas, también puedes querer acceder a un cliente in­di­vi­dual. Para ello, aplica el método get() a la clave co­rre­s­po­n­die­n­te. Se vería:

public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(lista de clientes.get(1077));
	}
}
java

Como resultado, solo debería aparecer “Manolo Rodríguez”.

Eliminar una o todas las entradas

Si deseas eliminar una entrada es­pe­cí­fi­ca, recurre al método remove(). Para ponerlo en práctica, sigue el ejemplo:

public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	lista de clientes.remove(1077);
	System.out.println(lista de clientes);
	}
}
java

En la consola, se mostraría:

{15312=Pepe García, 73329=María Pérez}
java

Como al­te­r­na­ti­va, también puedes eliminar toda la lista. Para ello, utiliza el método clear(). Así es como se aplica en el ejemplo:

public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	kundenliste.clear();
	System.out.println(lista de clientes);
	}
}
java

En la consola, se mostraría lo siguiente:

{ }
java

De­te­r­mi­nar el número de entradas

Aunque el ejemplo de HashMap en Java utilizado es muy sencillo y, por lo tanto, de­te­r­mi­nar el número de entradas no supone problema, en caso de proyectos de más en­ve­r­ga­du­ra averiguar el número exacto de entradas puede resultar más co­m­pli­ca­do. Para hacerlo, se puede recurrir al método size(). Así es como se utiliza:

public clase Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(lista de clientes.size());
	}
}
java

Se mostraría el número 3.

Vi­sua­li­za­ción de claves o valores solos

También es posible acceder a una lista que solo contenga claves o valores. Para ello, hay que recurrir a un bucle for-each. Utiliza el método keySet() para las claves y el método values() para los valores. Con este último, el código se mostraría como sigue:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	for (String i : lista de clientes.values()) {
		System.out.println(i);
		}
	}
}
java

Se mo­s­tra­rían los si­guie­n­tes re­su­l­ta­dos:

Manolo Rodríguez
Pepe García
María Pérez
java

Comprobar la di­s­po­ni­bi­li­dad de un elemento

No solo es posible acceder a una entrada concreta, sino que también se puede consultar si el HashMap de Java contiene algún valor o clave concretos. Para ello, se utilizan los métodos co­n­tai­n­s­Key() (para claves) y co­n­tai­n­s­Va­lue() (para valores). Si el elemento está incluido, se obtiene “true”. Si el elemento no está incluido, el resultado es “false”. En la práctica, los métodos se im­ple­me­n­tan como se muestra a co­n­ti­nua­ción:

public class Main {
public static void main(String[] args) {
	HashMap<Integer, String> lista de clientes = new HashMap<>();
	lista de clientes.put (1077, " Manolo Rodríguez");
	lista de clientes.put (15312, "Pepe García");
	lista de clientes.put (73329, "María Pérez");
	System.out.println(lista de clientes.containsKey(15312));
	System.out.println(lista de clientes.containsValue("Ana Martínez");
	}
}
java

Aunque en la lista sí aparece la clave “15312”, el valor “Ana Martínez” no aparece, por lo que la consola mostrará como resultado:

true
false
java
Ir al menú principal