Beste Möglichkeit, über ein Dictionary zu iterieren
-
Verwendung einer
for
-Schleife zur Iteration über ein Dictionary inC#
-
Verwendung einer
foreach
-Schleife zur Iteration über ein Dictionary inC#
-
Verwendung der Methode
ParallelEnumerable.ForAll
zur Iteration eines Dictionaries inC#
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.