Java Map – diccionarios en Java

Curso de Java

11.  
22.  

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

La Interfaz Map (java.io.Map) de Java, nos da una estructura de datos que nos permitirá almacenar pares clave/valor. Esto significa que cada valor será identificado con una clave, y cada clave sólo tendrá asociado un valor. En otros lenguajes, estas estructuras son llamadas «Diccionarios», aunque en cada lenguajes esta estructura de datos tiene sus matices.

Declaración de un Map

Map<String, String> map = new HashMap<Integer, String>();
map.put("75367834E", "Pablo Monteserín");

Tipos más importantes de maps:

  • HashMap: Los elementos que inserta en el map no tendrán un orden específico. No aceptan claves duplicadas ni valores nulos.
  • TreeMap: Los elementos del map tendrán un orden «natural». Por ejemplo, si la clave son valores enteros, serán ordenados de menos a mayor. Si son variables de texto, el orden será alfabético.
  • LinkedHashMap: Los elementos del map serán ordenados en su orden de insercción. Esta clase es más lenta que las otras a la hora de realizar búsquedas.

Métodos de la interfaz Map

myMap.size(); // Devuelve el numero de elementos del Map
myMap.isEmpty(); // Devuelve true si no hay elementos en el Map y false si si los hay
myMap.put("68274736E", "Paco Soria"); // Añade un elemento al Map
myMap.get("68274736E"); // Devuelve el valor de la clave que se le pasa como parámetro o 'null' si la clave no existe
myMap.clear(); // Borra todos los componentes del Map
myMap.remove("68274736E"); // Borra el par clave/valor de la clave que se le pasa como parámetro
myMap.containsKey("68274736E"); // Devuelve true si en el map hay una clave que coincide con K
myMap.containsValue("Paco Soria"); // Devuelve true si en el map hay un Valor que coincide con V
myMap.values(); // Devuelve una "Collection" con los valores del Map

Recorrer un map

Usando iterator

El método keySet() devuelve un set de claves. Luego, recuperaré los valores del map utilizando las claves que acabo de almacenar en el Set.

Iterator it = map.keySet().iterator();
while(it.hasNext()){
  String key = it.next();
  System.out.println("DNI: " + key + " -> Nombre: " + map.get(key));
}

Transformar un Map en una Collection

Collection <Persona> collection = map.values();
Iterator <Persona&gr; it = collection.iterator();
while(it.hasNext()){
 System.out.println(it.next().getNombre());
}

Recorrer un Map usando el bucle for

//Para cada elemento key del conjunto map.keySet()
for (String key : map.keySet()){
 System.out.println(key + "=> " + map.get(key).getNombre());
}
//1 Entry es un key-value pair
for(Map.Entry<String, Persona>entry:map.entrySet()){
 String key = entry.getKey();
 Persona3 value = entry.getValue();
 System.out.println(key + "=> " + value.getNombre());
 }
}

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.