CodeGym /Java Blog /Random-IT /Come iterare una mappa in Java
John Squirrels
Livello 41
San Francisco

Come iterare una mappa in Java

Pubblicato nel gruppo Random-IT
In questo post impareremo diversi modi per iterare una mappa in Java. Alcuni dei suoi modi comuni e come usarli con l'aiuto di esempi. Prima di iniziare, assumiamo che tu conosca le interfacce e le mappe in Java. Tuttavia, ecco un breve riepilogo per te.

Cos'è una mappa in Java?

Ci sono molte interpretazioni di questo, ma mettiamola semplicemente in questo modo.
"Map è un'interfaccia in Java, che viene utilizzata per memorizzare i dati sotto forma di coppie chiave-valore."
Se stai pensando a cosa servono le mappe? O quando sono necessari? Poi ci sono molte situazioni nella vita reale in cui abbiamo bisogno di memorizzare i dati in coppie chiave-valore. Ad esempio, tutte le parole corrispondenti a una singola lettera in un dizionario possono essere memorizzate sotto forma di mappa in Java.
K Aquilone, Re, Corea, Cavaliere,..., ecc.
l Lava, Vita, Luce, Amore, Libano,..., ecc.
Inoltre, puoi dare un'occhiata ai seguenti esempi per capirlo meglio.
Chiave Valore
ID di famiglia Membri della famiglia
Nome della classe ID studenti
Nome zona Codici di avviamento postale
Blocco zona Numeri civici

Perché abbiamo bisogno di iterare attraverso una mappa?

Abbiamo bisogno di attraversare o iterare su una mappa per accedere, modificare o rimuovere i dati. Esploriamo alcune delle opzioni che abbiamo.

Quali sono alcuni modi comuni per iterare una mappa in Java?

Sebbene ci siano molti modi per attraversare una mappa. Tuttavia, ci concentreremo sui modi più efficienti e semplici.
  1. Il metodo Ciclo ForEach
  2. Il metodo degli iteratori
Si prega di trovare l'implementazione di entrambi i metodi di seguito.

Utilizzando il metodo Foreach Loop

Esempio


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()); 
		}
	}
}

Produzione

chiave = 1, valore = lunedì chiave = 2, valore = martedì chiave = 3, valore = mercoledì chiave = 4, valore = giovedì chiave = 5, valore = venerdì

Spiegazione

In questo esempio abbiamo usato il ciclo foreach per iterare sulla mappa. Utilizzando il ciclo for-each, otteniamo un entrySet() che fornisce una "visualizzazione" automatizzata dei dati nella mappa, sotto forma di coppie chiave-valore. Ogni entrySet contiene una chiave e i valori corrispondenti. Dove puoi utilizzare tutti i metodi di Map.Entry<key, value> secondo i tuoi requisiti. Qui, abbiamo utilizzato solo getKey() e getValue() per visualizzare i dati sulla console. Come esercizio, puoi esplorare il resto dei metodi per rafforzare la tua padronanza su questo concetto.

Utilizzo del metodo Iteratori

Esempio


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());

		}
	}
}

Produzione

chiave = 11, valore = novembre chiave = 1, valore = gennaio chiave = 12, valore = dicembre chiave = 2, valore = febbraio chiave = 3, valore = marzo chiave = 4, valore = aprile chiave = 5, valore = maggio chiave = 6, valore = giugno chiave = 7, valore = luglio chiave = 8, valore = agosto chiave = 9, valore = settembre chiave = 10, valore = ottobre

Spiegazione

In questo esempio, creiamo un iteratore esplicito per attraversare/iterare sulla mappa. Innanzitutto, devi importare la classe iteratore, quindi ottenere l'iteratore per entrySet. Ora attraversa la mappa continuando a controllare la prossima entità che esiste sulla mappa. Ecco qua! La tua traversata è completa, proprio così.

Il ciclo Foreach è migliore del metodo degli iteratori?

Non importa quale metodo usi per l'attraversamento di una mappa purché faccia il lavoro per te. In termini di prestazioni, sia il ciclo for-each che gli iteratori hanno la stessa complessità temporale . Quindi nessuno è migliore dell'altro, dipende da cosa devi usare e quando.

Qual è la differenza tra i due metodi?

Il ciclo for-each non consente di aggiornare/modificare i dati nella mappa. Al contrario, puoi facilmente modificare i dati usando gli iteratori. La classe iterators ti facilita fornendo l'implementazione per modificare/rimuovere i dati nella mappa. Al contrario, se provi a modificare/eliminare i dati della mappa utilizzando il ciclo for-each, genererà un'eccezione ConcurrentModificationException . La ragione di ciò è che il ciclo for-each crea implicitamente un iteratore, che non è esposto all'utente. Pertanto, non hai l'accesso per modificare o eliminare alcun dato.

Quale metodo di attraversamento usare e quando?

Se non sei sicuro se utilizzare for-each o gli iteratori per iterare la tua mappa, puoi seguire i seguenti suggerimenti.
  • Utilizzare l' iteratore se è necessario modificare la mappa.
  • Usa il ciclo for-each se hai cicli nidificati (per evitare complessità).

Conclusione

Alla fine del post, speriamo che tu abbia imparato come iterare map in Java. Sei incoraggiato a praticarli e provare anche altri metodi di attraversamento. Sentiti libero di tornare indietro o pubblicare domande ogni volta che ti senti bloccato. Fino ad allora, buon apprendimento!
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION