logo

Comment parcourir n'importe quelle carte en Java

Il y a généralement cinq façons d'itérer sur un Carte en Java. Dans cet article, nous les aborderons tous et examinerons également leurs avantages et leurs inconvénients.
Tout d'abord, nous ne peut pas parcourir une carte directement en utilisant itérateurs , car les cartes ne sont pas Collection. Aussi, avant d'aller plus loin, vous devez en savoir un peu plus sur Carte.Entrée interface.
Puisque toutes les cartes en Java implémentent Carte interface, les techniques suivantes fonctionneront pour toute implémentation de carte ( HashMap , TreeMap , LinkedHashMap , Hashtable , etc.)

1. Itération sur Map.entrySet() en utilisant la boucle For-Each :
Map.entrySet() La méthode renvoie une vue de collection ( Ensemble ) des mappages contenus dans cette carte. Nous pouvons donc parcourir la paire clé-valeur en utilisant Obtenir la clé() et obtenirValeur() Méthodes de Carte.Entrée . Cette méthode est la plus courante et doit être utilisée si vous avez besoin à la fois de clés de mappage et de valeurs dans la boucle. Vous trouverez ci-dessous le programme Java pour le démontrer.



Java


compte distinct





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



>

>

Sortir:

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

2. Itération sur des clés ou des valeurs à l'aide des méthodes keySet() etvalues()
Map.keySet() La méthode renvoie une vue Set des clés contenues dans cette carte et Carte.values() La méthode renvoie une vue de collection des valeurs contenues dans cette carte. Ainsi, si vous n'avez besoin que de clés ou de valeurs de la carte, vous pouvez parcourir keySet ou des valeurs à l'aide de boucles for-each. Vous trouverez ci-dessous le programme Java pour le démontrer.

Java




nœud de liste 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);> >}> }>

>

>

Sortir:

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

3. Itérer en utilisant des itérateurs sur Carte.Entrée
Cette méthode est quelque peu similaire à la première. Dans la première méthode, nous utilisons une boucle for-each sur Map.Entry, mais ici nous utilisons itérateurs . Utiliser des itérateurs sur Map.Entry a son propre avantage, c'est-à-dire nous pouvons supprimer des entrées de la carte pendant l'itération en appelant itérateur.remove() méthode.

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

>

chaîne Java

>

Sortir:

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

4. Utilisation de la méthode forEach(action) :
Dans Java 8, vous pouvez parcourir une carte en utilisant Map.forEach(action) méthode et utilisation expression lambda . Cette technique est propre et rapide.

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

>

>

Sortir :

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

5. Itération sur les clés et recherche de valeurs (inefficace)
Ici, nous effectuons d'abord une boucle sur les clés (en utilisant Map.keySet() méthode), puis recherchez la valeur (en utilisant Map.get (clé) méthode) pour chaque clé. Cette méthode n'est pas utilisée dans la pratique car elle est assez lente et inefficace car l'obtention de valeurs par une clé peut prendre du temps.

Java


théorie des arbres et des graphes



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

>

>

Sortir:

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

Les références : Débordement de pile