En esta publicación, aprenderemos diferentes formas de iterar un mapa en Java. Algunas de sus formas comunes y cómo usarlas con la ayuda de ejemplos. Antes de comenzar, asumimos que comprende
las interfaces y
los mapas en Java. Sin embargo, aquí hay un resumen rápido para usted.
¿Qué es un mapa en Java?
Hay muchas interpretaciones de esto, pero simplemente digámoslo de esta manera.
“Map es una interfaz en Java, que se utiliza para almacenar datos en forma de pares clave-valor”.
Si estás pensando en ¿para qué sirven los mapas? O cuando se necesitan? Luego, hay muchas situaciones en la vida real en las que necesitamos almacenar datos en pares clave-valor. Por ejemplo, todas las palabras correspondientes a una sola letra en un diccionario se pueden almacenar en forma de mapa en Java.
k |
Cometa, Rey, Corea, Caballero,..., etc. |
L |
Lava, Vida, Luz, Amor, Líbano,..., etc. |
Además, puedes echar un vistazo a los siguientes ejemplos para entenderlo mejor.
Llave |
Valor |
identificación familiar |
Miembros de la familia |
Nombre de la clase |
ID de estudiante |
Nombre del área |
Códigos ZIP |
Bloque de área |
Números de casa |
¿Por qué necesitamos iterar a través de un Mapa?
Necesitamos atravesar o iterar sobre un mapa para acceder, modificar o eliminar datos. Exploremos algunas de las opciones que tenemos.
¿Cuáles son algunas formas comunes de iterar un mapa en Java?
Aunque hay muchas maneras de atravesar un mapa. Sin embargo, nos centraremos en las formas más eficientes y sencillas.
- El método de bucle ForEach
- El método de los iteradores
Encuentre la implementación de ambos métodos a continuación.
Usando el método de bucle Foreach
Ejemplo
import java.util.Map;
import java.util.HashMap;
public class ForEachDemo {
public static void main(String[] args) {
Map<String, String> businessDays = new HashMap<String, String>();
// store business days i-e; key/value pairs in the Map
businessDays.put("1", "Monday");
businessDays.put("2", "Tuesday");
businessDays.put("3", "Wednesday");
businessDays.put("4", "Thursday");
businessDays.put("5", "Friday");
// Iterating over the Map.entrySet() using map.forEach
for (Map.Entry<String, String> entry : businessDays.entrySet())
{
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}
}
}
Producción
clave = 1, valor = lunes
clave = 2, valor = martes
clave = 3, valor = miércoles
clave = 4, valor = jueves
clave = 5, valor = viernes
Explicación
En este ejemplo, usamos el ciclo foreach para iterar sobre el mapa. Al usar el ciclo for-each, obtenemos un
entrySet() que proporciona una "vista" automatizada de los datos en el mapa, en forma de pares clave-valor. Cada conjunto de entradas contiene una clave y los valores correspondientes. Donde puede usar todos los métodos de
Map.Entry<key, value> según sus requisitos. Aquí, solo hemos usado
getKey() y
getValue() para mostrar los datos en la consola. Como ejercicio, puedes explorar el resto de los métodos para fortalecer tu dominio sobre este concepto.
Usando el método de iteradores
Ejemplo
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapIterator {
public static void main(String[] args) {
Map<String, String> monthsInAYear = new HashMap<String, String>();
// store business days i-e; key/value pairs in the Map
monthsInAYear.put("1", "January");
monthsInAYear.put("2", "February");
monthsInAYear.put("3", "March");
monthsInAYear.put("4", "April");
monthsInAYear.put("5", "May");
monthsInAYear.put("6", "June");
monthsInAYear.put("7", "July");
monthsInAYear.put("8", "August");
monthsInAYear.put("9", "September");
monthsInAYear.put("10", "October");
monthsInAYear.put("11", "November");
monthsInAYear.put("12", "December");
// iterate map / traverse the map using using iterator
Iterator<Map.Entry<String, String>> iterator = monthsInAYear.entrySet().iterator();
while (iterator.hasNext())
{
// check if next entry exists in the map
Map.Entry<String, String> entry = iterator.next();
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}
}
}
Producción
clave = 11, valor = noviembre
clave = 1, valor = enero
clave = 12, valor = diciembre
clave = 2, valor = febrero
clave = 3, valor = marzo
clave = 4, valor = abril
clave = 5, valor = mayo
clave = 6, valor = junio
clave = 7, valor = julio
clave = 8, valor = agosto
clave = 9, valor = septiembre
clave = 10, valor = octubre
Explicación
En este ejemplo, creamos un iterador explícito para atravesar/iterar sobre el mapa. Primero, debe importar la clase de iterador y luego obtener el iterador para el conjunto de entrada. Ahora recorra el mapa mientras sigue comprobando la siguiente entidad que existe en el mapa. ¡Ahí tienes! Su recorrido está completo, así como así.
¿Es el bucle Foreach mejor que el método de los iteradores?
No importa qué método utilice para atravesar un mapa, siempre que haga el trabajo por usted.
En términos de rendimiento, tanto el bucle for-each como los iteradores tienen la misma complejidad de tiempo . Entonces, ninguno es mejor que el otro, depende de lo que necesite usar y cuándo.
¿Cuál es la diferencia entre los dos métodos?
El ciclo for-each no permite actualizar/modificar los datos en el mapa. Por el contrario, puede modificar fácilmente los datos utilizando iteradores. La clase de iteradores lo facilita al proporcionar implementación para editar/eliminar los datos en el mapa. Por el contrario, si intenta editar/eliminar datos del mapa usando el ciclo for-each, generará una
ConcurrentModificationException . La razón de esto es que el ciclo for-each crea implícitamente un iterador, que no está expuesto al usuario. Por lo tanto, no tiene acceso para modificar o eliminar ningún dato.
¿Qué método transversal utilizar y cuándo?
Si no está seguro de si usar for-each o los iteradores para iterar su mapa, puede tomar las siguientes sugerencias.
- Utilice el iterador si tiene que modificar el mapa.
- Utilice el bucle for-each si tiene bucles anidados (para evitar la complejidad).
Conclusión
Al final de la publicación, esperamos que haya aprendido cómo iterar mapas en Java. Le recomendamos que practique estos y pruebe también otros métodos de recorrido. Siéntase libre de volver atrás o publicar preguntas cuando se sienta atascado. Hasta entonces, feliz aprendizaje!
GO TO FULL VERSION