La meilleure façon d'itérer sur un dictionnaire

Puneet Dobhal 12 octobre 2023
  1. Utilisation de la boucle for pour itérer sur un dictionnaire en C#
  2. Utilisation de la boucle foreach pour itération sur un dictionnaire en C#
  3. Utilisation de la méthode ParallelEnumerable.ForAll pour itérer un dictionnaire en C#
La meilleure façon d'itérer sur un dictionnaire

Le dictionnaire en C# est une collection de paires de valeurs clés. Il est quelque peu similaire au dictionnaire anglais où la key représente un mot et la value sa signification. Dans cet article, nous examinerons les différentes façons d’itérer un dictionnaire.

À des fins de représentation, nous examinerons la définition suivante de l’objet Dictionnaire tout au long de l’article.

Dictionary<int, string> sample_Dict = new Dictionary<int, string>();

Voyons maintenant quelques-unes des méthodes que vous pouvez utiliser pour parcourir ce dictionnaire.

Utilisation de la boucle for pour itérer sur un dictionnaire en C#

La méthode de la boucle for est facile et concise, où nous répétons séquentiellement le dictionnaire en utilisant un index.

using System;
using System.Collections.Generic;

public class Sample {
  public static void Main() {
    Dictionary<int, string> sample_Dict =
        new Dictionary<int, string>() { { 0, "value_1" }, { 1, "value_2" }, { 2, "value_3" } };
    for (int index = 0; index < sample_Dict.Count; index++)
      System.Console.WriteLine(index + ":" + sample_Dict[index]);
  }
}

Production:

0 : value_1 1 : value_2 2 : value_3

Comme vous le remarquerez, nous avons également spécifié la liste d’initialisation lors de la définition de l’objet Dictionnaire. Lors de la spécification de la liste d’initialisation, assurez-vous que chaque entrée de la liste a une clé unique, sinon, cela conduira à une exception Run-time.

Utilisation de la boucle foreach pour itération sur un dictionnaire en C#

Le bouclage en boucle est une autre alternative que vous pouvez choisir.

using System;
using System.Collections.Generic;

public class Sample {
  public static void Main() {
    Dictionary<int, string> sample_Dict =
        new Dictionary<int, string>() { { 0, "value_1" }, { 1, "value_2" }, { 2, "value_3" } };
    foreach (var entry in sample_Dict) System.Console.WriteLine(entry.Key + ":" + entry.Value);
  }
}

Production:

0 : value_1 1 : value_2 2 : value_3

La méthode ci-dessus peut être considérée comme une implémentation paresseuse de la boucle foreach. Nous pouvons également implémenter la méthode foreach en utilisant la structure KeyValuePair<TKey,TValue>.

using System;
using System.Collections.Generic;

public class Sample {
  public static void Main() {
    Dictionary<int, string> sample_Dict =
        new Dictionary<int, string>() { { 0, "value_1" }, { 1, "value_2" }, { 2, "value_3" } };
    foreach (var entry in sample_Dict) System.Console.WriteLine(entry.Key + ":" + entry.Value);
  }
}

Production:

0 : value_1 1 : value_2 2 : value_3

Utilisation de la méthode ParallelEnumerable.ForAll pour itérer un dictionnaire en C#

Cette méthode s’avère pratique lorsque vous itérez sur de grands dictionnaires, car elle intègre un traitement multithreading pour chaque paire clé-valeur dans le dictionnaire.

using System;
using System.Linq;
using System.Collections.Generic;

public class Sample {
  public static void Main() {
    /*User Code Here*/
    Dictionary<int, string> sample_Dict =
        new Dictionary<int, string>() { { 0, "value_1" }, { 1, "value_2" }, { 2, "value_3" } };
    sample_Dict.AsParallel().ForAll(entry => Console.WriteLine(entry.Key + ":" + entry.Value));
  }
}

Production:

0 : value_1 1 : value_2 2 : value_3

Lors de l’analyse de la meilleure méthode parmi celles mentionnées ci-dessus, nous devons tenir compte de certains paramètres et le résultat sera circonstanciel. La méthode de bouclage est concise et efficace, mais lorsqu’il s’agit d’itérer de grands dictionnaires, elle devient peu pratique en termes de complexité du temps d’exécution.

C’est là qu’intervient la méthode ParallelEnumerable.ForAll, car elle permet une exécution simultanée, ce qui permet de gagner un temps crucial, ce qui peut être un facteur important lors de la conception de certaines applications.

Article connexe - Csharp Dictionary