Beste Möglichkeit, über ein Wörterbuch zu iterieren

  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 Wörterbuchs in C

Dictionary in C# ist eine Sammlung von Schlüssel-Werte-Paaren. Sie ähnelt in gewisser Weise dem englischen Wörterbuch, wo der Schlüssel ein Wort darstellt und Wert seine Bedeutung ist. In diesem Artikel werden wir uns verschiedene Möglichkeiten der Iteration eines Wörterbuchs 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 Wörterbuch 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 Wörterbuch 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 Wörterbuchs 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 Wörterbuch 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.

comments powered by Disqus