Un Map en Java es una estructura de datos que guarda elementos en pares clave-valor, donde clave (key) es un identificador único de un valor(value) dado:
{“clave”:”valor”} -> {“nombre”:”Juan”}
La estructura Map se importa en nuestro código para poder utilizarse desde el paquete incluido en Java:import java.util.HashMap;
Es conocida en otros lenguajes como “diccionario” y tiene diferentes matices según el lenguaje de programación que estemos utilizando.
La clase Map, tiene muchos métodos útiles, por ejemplo:
Con .put, agregamos elementos al mapa:
public class Main {
public static void main(String[] args) {
// Creamos el Map paisCapital
HashMap < String, String > paisCapital = new HashMap < String, String > ();
// Llenamos el mapa con su par clave:valor (Pais:Capital)
paisCapital.put("Rusia", "Moscu");
paisCapital.put("España", "Madrid");
paisCapital.put("Argentina", "Buenos Aires");
paisCapital.put("Brasil", "Brasilia");
System.out.println(paisCapital);
}
}
Con .get accedemos a un elemento especificado, por ejemplo:paisCapital.get(“España”);
Con .remove quitamos un elemento especificado:paisCapital.remove(“Rusia”);
Para borrar todos los elementos, utilizamos .clear:paisCapital.clear();
También podemos recorrer un mapa (clave:valor) a través de un bucle for, utilizando los distintos métodos disponibles que son keySet y values.
En la definición del bucle aclaramos si queremos la clave (la parte izquierda del par), el valor (la parte derecha del par) o ambos:
Para mostrar la clave(key):
for (String i: paisCapital.keySet()) {
//en nuestro ejemplo va a mostrarnos los países
System.out.println(i);
}
Para mostrar el valor(value):
for (String i: paisCapital.values()) {
//en nuestro ejemplo va a mostrarnos, las capitales
System.out.println(i);
}
Observemos que hemos utilizado el tipo de dato String, que en Java es un objeto, no es un tipo de dato primitivo (datos primitivos: int, char, boolean, etc.).
Para poder usar datos de tipo primitivo, debemos “envolverlos” en una clase contenedora equivalente, como lo sería para un dato int -> Integer, para un dato char -> Character y así sucesivamente.
Observación: Muchas veces se interpreta que HashMap y Map son lo mismo, pero no lo son. El prefijo Hash delante de un método, indica que es una implementación de dicho método, mientras que Map, es el método en sí mismo, para entenderlo mejor:
indica implementación de un método ← HashMap → el método propiamente dicho
Dentro de las clases Map que vienen con Java, las que se utilizan con más frecuencia son: