logo

Come iterare qualsiasi mappa in Java

In genere ci sono cinque modi di iterare su a Carta geografica a Giava. In questo articolo li discuteremo tutti e ne vedremo anche i vantaggi e gli svantaggi.
Noi innanzitutto non può iterare una mappa direttamente utilizzando iteratori , perché Map non lo è Collezione. Inoltre, prima di andare oltre, devi sapere qualcosa in più Mappa.Entrata interfaccia.
Poiché tutte le mappe in Java implementano Carta geografica interfaccia, le seguenti tecniche funzioneranno per qualsiasi implementazione della mappa ( HashMap , TreeMap , LinkedHashMap , Hashtable , ecc.)

1. Iterazione su Map.entrySet() utilizzando il ciclo For-Each:
Map.entrySet() il metodo restituisce una vista-raccolta( Impostato ) delle mappature contenute in questa mappa. Quindi possiamo scorrere la coppia chiave-valore utilizzando getKey() E getValore() metodi di Mappa.Entrata . Questo metodo è il più comune e dovrebbe essere utilizzato se sono necessari sia chiavi che valori della mappa nel ciclo. Di seguito è riportato il programma Java per dimostrarlo.

Giava




stringa nell'array java



// Java program to demonstrate iteration over> // Map.entrySet() entries using for-each loop> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// using for-each loop for iteration over Map.entrySet()> >for> (Map.Entry entry : gfg.entrySet())> >System.out.println(>'Key = '> + entry.getKey() +> >', Value = '> + entry.getValue());> >}> }>

>

>

Produzione:

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

2. Iterazione su chiavi o valori utilizzando i metodi keySet() evalues()
Map.keySet() restituisce una vista Set delle chiavi contenute in questa mappa e Map.values() Il metodo restituisce una vista di raccolta dei valori contenuti in questa mappa. Pertanto, se hai bisogno solo di chiavi o valori dalla mappa, puoi scorrere keySet o valori utilizzando i cicli for-each. Di seguito è riportato il programma Java per dimostrarlo.

Giava




// Java program to demonstrate iteration over> // Map using keySet() and values() methods> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// using keySet() for iteration over keys> >for> (String name : gfg.keySet())> >System.out.println(>'key: '> + name);> > >// using values() for iteration over values> >for> (String url : gfg.values())> >System.out.println(>'value: '> + url);> >}> }>

>

>

numeri abc

Produzione:

key: Quiz key: Practice key: GFG key: Code value: www.techcodeview.com value: practice.techcodeview.com value: techcodeview.com value: code.techcodeview.com>

3. Iterazione utilizzando gli iteratori Mappa.Entrata
Questo metodo è in qualche modo simile al primo. Nel primo metodo usiamo il ciclo for-each su Map.Entry, ma qui usiamo iteratori . L'uso degli iteratori su Map.Entry ha il suo vantaggio, ovvero possiamo rimuovere le voci dalla mappa durante l'iterazione chiamando iteratore.remove() metodo.

Giava




// Java program to demonstrate iteration over> // Map using keySet() and values() methods> > import> java.util.Map;> import> java.util.HashMap;> import> java.util.Iterator;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// using iterators> >Iterator itr = gfg.entrySet().iterator();> > >while>(itr.hasNext())> >{> >Map.Entry entry = itr.next();> >System.out.println(>'Key = '> + entry.getKey() +> >', Value = '> + entry.getValue());> >}> >}> }>

>

>

Produzione:

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

4. Utilizzo del metodo forEach(azione):
In Java 8, puoi eseguire l'iterazione di una mappa utilizzando Map.forEach(azione) metodo e utilizzo espressione lambda . Questa tecnica è pulita e veloce.

Giava


struttura nella struttura dei dati



// Java code illustrating iteration> // over map using forEach(action) method> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// forEach(action) method to iterate map> >gfg.forEach((k,v) ->System.out.println(>'Key = '> >+ k +>', Value = '> + v));> > >}> }>

>

>

Produzione :

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

5. Iterazione sulle chiavi e ricerca di valori (inefficiente)
Qui per prima cosa eseguiamo il looping delle chiavi (usando Map.keySet() metodo) e quindi cercare valore (utilizzando Map.get(chiave) metodo) per ciascuna chiave. Questo metodo non viene utilizzato nella pratica poiché è piuttosto lento e inefficiente poiché ottenere valori tramite una chiave potrebbe richiedere molto tempo.

Giava




// Java program to demonstrate iteration> // over keys and searching for values> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// looping over keys> >for> (String name : gfg.keySet())> >{> >// search for value> >String url = gfg.get(name);> >System.out.println(>'Key = '> + name +>', Value = '> + url);> >}> >}> }>

>

pronunciare un comando

>

Produzione:

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

Riferimenti : StackOverflow