Es gibt im Allgemeinen fünf Möglichkeiten, über a zu iterieren Karte in Java. In diesem Artikel werden wir sie alle besprechen und uns auch mit ihren Vor- und Nachteilen befassen.
Zunächst einmal wir kann nicht iterieren Sie eine Karte direkt mit Iteratoren , weil Map nicht vorhanden ist Sammlung. Bevor Sie fortfahren, müssen Sie außerdem ein wenig darüber wissen Karteneintrag Schnittstelle.
Da alle Karten in Java implementiert sind Karte Schnittstelle funktionieren die folgenden Techniken für jede Kartenimplementierung ( HashMap , TreeMap , LinkedHashMap , Hashtable usw.)
1. Iterieren über Map.entrySet() mit der For-Each-Schleife:
Map.entrySet() Methode gibt eine Sammlungsansicht zurück( Satz
Java
Javascript-Operatoren
// 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());> > }> }> |
>
>
Ausgabe:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
2. Durchlaufen von Schlüsseln oder Werten mit den Methoden keySet() und Values()
Map.keySet() Die Methode gibt eine Set-Ansicht der in dieser Karte enthaltenen Schlüssel zurück und Map.values() Die Methode gibt eine Sammlungsansicht der in dieser Karte enthaltenen Werte zurück. Wenn Sie also nur Schlüssel oder Werte aus der Karte benötigen, können Sie mit for-each-Schleifen über keySet oder Werte iterieren. Unten finden Sie das Java-Programm zur Demonstration.
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);> > }> }> |
Alphabet zu Zahl
>
>
Ausgabe:
key: Quiz key: Practice key: GFG key: Code value: www.techcodeview.com value: practice.techcodeview.com value: techcodeview.com value: code.techcodeview.com>
3. Iterieren mit Iteratoren über Karteneintrag
Diese Methode ähnelt in gewisser Weise der ersten. In der ersten Methode verwenden wir die for-each-Schleife über Map.Entry, aber hier verwenden wir Iteratoren . Die Verwendung von Iteratoren gegenüber Map.Entry hat seinen eigenen Vorteil, d. h. Wir können während der Iteration Einträge aus der Karte entfernen, indem wir aufrufen iterator.remove() Methode.
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());> > }> > }> }> |
>
>
Abstraktion in Java
Ausgabe:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
4. Verwendung der forEach(action)-Methode:
In Java 8 können Sie eine Karte mit iterieren Map.forEach(Aktion) Methode und Verwendung Lambda-Ausdruck . Diese Technik ist sauber und schnell.
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));> > > }> }> |
>
>
Ausgabe :
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
5. Iterieren über Schlüssel und Suchen nach Werten (ineffizient)
Hier durchlaufen wir zunächst eine Schleife über die Tasten (mit Map.keySet() Methode) und suchen Sie dann nach dem Wert (mit Map.get(Schlüssel) Methode) für jeden Schlüssel. Diese Methode wird in der Praxis nicht verwendet, da sie ziemlich langsam und ineffizient ist, da das Abrufen von Werten über einen Schlüssel zeitaufwändig sein kann.
Java
0,0625 als Bruch
// 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);> > }> > }> }> |
>
>
Ausgabe:
Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>
Verweise : Paketüberfluss