1. Información general
En este artículo rápido, veremos las diferentes formas de iterar a través de las entradas de un mapa en Java.
En pocas palabras, podemos extraer el contenido de un mapa usando keySet (), valueSet () o entrySet () . Dado que todos son conjuntos, se aplican principios de iteración similares a todos ellos.
La API Map.entrySet devuelve una vista de colección del mapa, cuyos elementos son de la clase Map . La única forma de obtener una referencia a una sola entrada de mapa es desde el iterador de esta vista de colección.
La entrada.getKey () devuelve la clave y la entrada.getValue () devuelve el valor correspondiente.
Echemos un vistazo a algunos de estos.
2. EntrySet y for Loop
Primero, veamos cómo recorrer en iteración un mapa usando el conjunto de entrada :
public void iterateUsingEntrySet(Map map) { for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }
Aquí, estamos convirtiendo nuestro mapa en un conjunto de entradas y luego iterando a través de ellas usando el enfoque clásico para cada uno.
Podemos acceder a una clave de cada entrada llamando a getKey () y podemos acceder a un valor de cada entrada llamando a getValue ().
3. Iterador y EntrySet
Otro enfoque sería obtener un conjunto de entradas y realizar la iteración usando un Iterador:
public void iterateUsingIteratorAndEntry(Map map) { Iterator
iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); System.out.println(entry.getKey() + ":" + entry.getValue()); } }
Aviso cómo podemos obtener el iterador instancia utilizando el iterador () de la API de entrySet (). Luego, como de costumbre, recorremos el iterador con iterator.next ().
4. Con Lambdas
Veamos ahora cómo iterar un mapa usando expresiones lambda .
Como la mayoría de las otras cosas en Java 8, esto resulta ser mucho más simple que las alternativas; haremos uso del método forEach () :
public void iterateUsingLambda(Map map) { map.forEach((k, v) -> System.out.println((k + ":" + v))); }
En este caso, no es necesario convertir un mapa en un conjunto de entradas. Para obtener más información sobre las expresiones lambda, puede comenzar aquí.
5. Stream API
Stream API es una de las principales características de Java 8 . También podemos usar esta función para recorrer un mapa , pero como en los ejemplos anteriores, primero necesitamos obtener un conjunto de entradas:
public void iterateUsingStreamAPI(Map map) { map.entrySet().stream() // ... .forEach(e -> System.out.println(e.getKey() + ":" + e.getValue())); }
Esto debería usarse cuando planeemos realizar algún procesamiento adicional de Stream . De lo contrario, es solo un forEach () simple como se describió anteriormente.
Para obtener más información sobre Stream API, consulte este artículo.
6. Conclusión
En este tutorial, nos hemos centrado en una operación simple pero crítica: iterar a través de las entradas de un mapa.
Hemos visto un par de métodos que se pueden usar solo con Java 8, a saber, expresiones Lambda y la API Stream .
Como siempre, los ejemplos de código del artículo se pueden encontrar en GitHub.