Dans cet article, nous allons apprendre différentes manières d'itérer une carte en Java. Certains de ses moyens courants et comment les utiliser à l'aide d'exemples. Avant de commencer, nous supposons que vous comprenez
les interfaces et
les cartes en Java. Cependant, voici un bref récapitulatif pour vous.
Qu'est-ce qu'une carte en Java ?
Il existe de nombreuses interprétations de cela, mais disons simplement de cette façon.
"Map est une interface en Java, qui est utilisée pour stocker des données sous la forme de paires clé-valeur."
Si vous pensez à quoi servent les cartes? Ou quand sont-ils nécessaires ? Ensuite, il existe de nombreuses situations dans la vie réelle où nous devons stocker des données dans des paires clé-valeur. Par exemple, tous les mots correspondant à une seule lettre dans un dictionnaire peuvent être stockés sous forme de carte en Java.
K |
Cerf-volant, roi, corée, chevalier,..., etc. |
L |
Lave, Vie, Lumière, Amour, Liban,..., etc. |
De plus, vous pouvez consulter les exemples suivants pour mieux comprendre cela.
Clé |
Valeur |
Carte d'identité familiale |
Membres de la famille |
Nom du cours |
Cartes d'étudiant |
Nom de la zone |
Codes ZIP |
Bloc de zone |
Numéros de maison |
Pourquoi avons-nous besoin de parcourir une carte ?
Nous devons traverser ou parcourir une carte pour accéder, modifier ou supprimer des données. Explorons quelques-unes des options que nous avons.
Quels sont les moyens courants d'itérer une carte en Java ?
Bien qu'il existe de nombreuses façons de parcourir une carte. Cependant, nous nous concentrerons sur les moyens les plus efficaces et les plus simples.
- La méthode de boucle ForEach
- La méthode des itérateurs
Veuillez trouver la mise en œuvre des deux méthodes ci-dessous.
Utilisation de la méthode de la boucle Foreach
Exemple
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());
}
}
}
Sortir
clé = 1, valeur = lundi
clé = 2, valeur = mardi
clé = 3, valeur = mercredi
clé = 4, valeur = jeudi
clé = 5, valeur = vendredi
Explication
Dans cet exemple, nous avons utilisé la boucle foreach pour parcourir la carte. En utilisant la boucle for-each, nous obtenons un
entrySet() qui fournit une "vue" automatisée des données de la carte, sous la forme de paires clé-valeur. Chaque entrySet contient une clé et les valeurs correspondantes. Où vous pouvez utiliser toutes les méthodes de
Map.Entry<key, value> selon vos besoins. Ici, nous n'avons utilisé que
getKey() et
getValue() pour afficher les données sur la console. En guise d'exercice, vous pouvez explorer le reste des méthodes pour renforcer votre maîtrise de ce concept.
Utilisation de la méthode des itérateurs
Exemple
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());
}
}
}
Sortir
clé = 11, valeur = novembre
clé = 1, valeur = janvier
clé = 12, valeur = décembre
clé = 2, valeur = février
clé = 3, valeur = mars
clé = 4, valeur = avril
clé = 5, valeur = mai
clé = 6, valeur = juin
clé = 7, valeur = juillet
clé = 8, valeur = août
clé = 9, valeur = septembre
clé = 10, valeur = octobre
Explication
Dans cet exemple, nous créons un itérateur explicite pour parcourir/itérer sur la carte. Tout d'abord, vous devez importer la classe d'itérateur, puis obtenir l'itérateur pour l'entrySet. Maintenant, parcourez la carte tout en continuant à vérifier la prochaine entité qui existe sur la carte. Voilà! Votre traversée est terminée, juste comme ça.
La boucle Foreach est-elle meilleure que la méthode des itérateurs ?
Peu importe la méthode que vous utilisez pour parcourir une carte tant qu'elle fait le travail pour vous.
En termes de performances, la boucle for-each et les itérateurs ont la même complexité temporelle . Donc, aucun n'est meilleur que l'autre, cela dépend de ce que vous devez utiliser et quand.
Quelle est la différence entre les deux méthodes ?
La boucle for-each ne permet pas de mettre à jour/modifier les données dans la carte. Au contraire, vous pouvez facilement modifier les données à l'aide d'itérateurs. La classe iterators vous facilite la tâche en fournissant une implémentation pour modifier/supprimer les données de la carte. Au contraire, si vous essayez de modifier/supprimer des données de carte à l'aide de la boucle for-each, cela lèvera une
ConcurrentModificationException . La raison en est que la boucle for-each crée implicitement un itérateur, qui n'est pas exposé à l'utilisateur. Par conséquent, vous n'avez pas l'accès pour modifier ou supprimer des données.
Quelle méthode de parcours utiliser et quand ?
Si vous n'êtes pas sûr d'utiliser for-each ou les itérateurs pour itérer votre carte, vous pouvez suivre les suggestions suivantes.
- Utilisez l' itérateur si vous devez modifier la carte.
- Utilisez la boucle for-each si vous avez des boucles imbriquées (pour éviter la complexité).
Conclusion
À la fin de l'article, nous espérons que vous avez appris à itérer une carte en Java. Nous vous encourageons à les pratiquer et à essayer d'autres méthodes de traversée également. N'hésitez pas à revenir en arrière ou à poser des questions chaque fois que vous vous sentez coincé. D'ici là, bon apprentissage !
GO TO FULL VERSION