Beste Möglichkeit, über ein Dictionary zu iterieren

Puneet Dobhal 12 Oktober 2023
  1. Verwendung einer for-Schleife zur Iteration über ein Dictionary in C#
  2. Verwendung einer foreach-Schleife zur Iteration über ein Dictionary in C#
  3. Verwendung der Methode ParallelEnumerable.ForAll zur Iteration eines Dictionaries in C#
Beste Möglichkeit, über ein Dictionary zu iterieren

Dictionary in C# ist eine Sammlung von Schlüssel-Werte-Paaren. Sie ähnelt in gewisser Weise dem englischen Dictionary, wo der Schlüssel ein Wort darstellt und Wert seine Bedeutung ist. In diesem Artikel werden wir uns verschiedene Möglichkeiten der Iteration eines Dictionaries ansehen.

Zu Darstellungszwecken werden wir im gesamten Artikel die folgende Definition des Dictionary-Objekts betrachten.

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

Sehen wir uns nun einige der Methoden an, mit denen Sie dieses Dictionary durchlaufen können.

Verwendung einer for-Schleife zur Iteration über ein Dictionary in C#

Die for-Schleifenmethode ist einfach und prägnant, bei der wir mit Hilfe eines Indexes sequentiell über das Dictionary iterieren.

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

Ausgabe:

0:value_1
1:value_2
2:value_3

Wie Sie bemerken werden, haben wir bei der Definition des Dictionary-Objekts auch die Initialisierungsliste angegeben. Achten Sie bei der Angabe der Initialisiererliste darauf, dass jeder Eintrag in der Liste einen eindeutigen Schlüssel hat, da es sonst zu einer Laufzeit-Ausnahme kommt.

Verwendung einer foreach-Schleife zur Iteration über ein Dictionary in C#

foreach looping ist eine weitere Alternative, für die Sie sich entscheiden können.

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

Ausgabe:

0:value_1
1:value_2
2:value_3

Die obige Methode kann als eine faule Implementierung der foreach-Schleife betrachtet werden. Wir können die foreach-Methode auch mit der KeyValuePair<TKey,TValue>-Struktur implementieren.

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

Ausgabe:

0:value_1
1:value_2
2:value_3

Verwendung der Methode ParallelEnumerable.ForAll zur Iteration eines Dictionaries in C#

Diese Methode ist nützlich, wenn Sie über große Wörterbücher iterieren, da sie eine Multithreading-Verarbeitung für jedes Schlüssel-Werte-Paar im Dictionary beinhaltet.

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

Ausgabe:

0 : value_1 1 : value_2 2 : value_3

Bei der Analyse der besten der oben genannten Methoden müssen wir bestimmte Parameter berücksichtigen, und das Ergebnis wäre umständlich. Die Schleifenmethode ist prägnant und effektiv, aber bei der Iteration großer Wörterbücher wird sie im Hinblick auf die Komplexität der Laufzeit unpraktisch.

Hier kommt die ParallelEnumerable.ForAll-Methode ins Spiel, da sie die gleichzeitige Ausführung ermöglicht, wodurch entscheidende Zeit gespart wird, was beim Entwurf bestimmter Anwendungen ein wichtiger Faktor sein kann.

Verwandter Artikel - Csharp Dictionary