Există în general cinci moduri de iterare peste a Hartă în Java. În acest articol, le vom discuta pe toate și, de asemenea, vom analiza avantajele și dezavantajele lor.
În primul rând, noi nu poti repetați o hartă direct folosind iteratoare , deoarece Map nu sunt Colectie. De asemenea, înainte de a merge mai departe, trebuie să știți puțin despre Hartă.Intrare interfață.
Deoarece toate hărțile din Java implementează Hartă interfață, următoarele tehnici vor funcționa pentru orice implementare a hărții ( HashMap , TreeMap , LinkedHashMap , Hashtable etc.)
1. Iterarea peste Map.entrySet() folosind bucla For-Each :
Map.entrySet() metoda returnează o vizualizare a colecției ( A stabilit
Java
alfabet după numere
// 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());> >}> }> |
>
>
Ieșire:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
2. Iterarea peste chei sau valori folosind metodele keySet() și values().
Map.keySet() metoda returnează o vizualizare Set a cheilor conținute în această hartă și Map.values() metoda returnează o vizualizare-colecție a valorilor conținute în această hartă. Deci, dacă aveți nevoie doar de chei sau valori de pe hartă, puteți itera peste set de chei sau valori folosind bucle pentru fiecare. Mai jos este programul java pentru a-l demonstra.
Java
// 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);> >}> }> |
>
tutoriale java
>
Ieșire:
key: Quiz key: Practice key: GFG key: Code value: www.techcodeview.com value: practice.techcodeview.com value: techcodeview.com value: code.techcodeview.com>
3. Iterare folosind iteratoare peste Hartă.Intrare
Această metodă este oarecum similară cu prima. În prima metodă folosim for-each bucla peste Map.Entry, dar aici folosim iteratoare . Utilizarea iteratoarelor peste Map.Entry are propriul avantaj, adică. putem elimina intrări de pe hartă în timpul iterației prin apelare iterator.remove() metodă.
Java
// 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());> >}> >}> }> |
>
>
Ieșire:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
4. Folosind metoda forEach(action) :
În Java 8, puteți repeta o hartă folosind Map.forEach(action) metoda si utilizarea expresie lambda . Această tehnică este curată și rapidă.
Java
șir în int java
// 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));> > >}> }> |
>
>
Ieșire:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
5. Iterarea peste chei și căutarea valorilor (ineficientă)
Aici, mai întâi, trecem peste taste (folosind Map.keySet() metoda) și apoi căutați valoare (folosind Map.get(key) metoda) pentru fiecare cheie. Această metodă nu este utilizată în practică, deoarece este destul de lentă și ineficientă, deoarece obținerea valorilor de către o cheie ar putea consuma timp.
Java
// 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);> >}> >}> }> |
q1 q2 q3 q4
>
>
Ieșire:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
Referinte: Stackoverflow