CodeGym /Blog Java /Random-ES /Cómo iterar un mapa en Java
Autor
Milan Vucic
Programming Tutor at Codementor.io

Cómo iterar un mapa en Java

Publicado en el grupo Random-ES
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.
  1. El método de bucle ForEach
  2. 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!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION