SortedDictionary in C# ist eine binärbaumbasierte Implementierung, die ihre Elemente in der Schlüsselreihenfolge beibehält. Es handelt sich um eine Sammlung von Schlüssel/Wert-Paaren, sortiert nach Schlüssel. In diesem Artikel erfahren Sie Schritt für Schritt, wie Sie in C# überprüfen, ob zwei SortedDictionary-Objekte gleich sind. Schließlich werden Sie in der Lage sein, festzustellen, ob zwei SortedDictionary-Objekte dieselben Elemente enthalten und gleich sind.
Bevor Sie fortfahren, ist es wichtig zu verstehen, was ein SortedDictionary ist. Es handelt sich um eine binärbaumbasierte Sammlung in C#, die Schlüssel-Wert-Paare in sortierter Schlüsselreihenfolge speichert. Es ist Teil des System.Collections.Generic-Namespace.
Dies ist ein Beispiel für SortedDictionary -
SortedDictionary<string, int> sortedDict = new SortedDictionary<string, int>() { {"One", 1}, {"Two", 2}, {"Three", 3} };
Eine der einfachsten Möglichkeiten, zu überprüfen, ob zwei SortedDictionary-Objekte gleich sind, ist die Verwendung der SequenceEqual-Methode aus dem System.Linq-Namespace. Da SortedDictionary die Reihenfolge der Elemente basierend auf dem Schlüssel automatisch beibehält, können Sie SequenceEqual direkt zum Vergleich verwenden.
Hier ist ein Codeausschnitt, der dies demonstriert -
using System; using System.Collections.Generic; using System.Linq; public class Program { public static void Main() { SortedDictionary<string, int> sortedDict1 = new SortedDictionary<string, int>() { {"One", 1}, {"Two", 2}, {"Three", 3} }; SortedDictionary<string, int> sortedDict2 = new SortedDictionary<string, int>() { {"One", 1}, {"Two", 2}, {"Three", 3} }; bool areEqual = sortedDict1.SequenceEqual(sortedDict2); Console.WriteLine("SortedDictionaries equal: " + areEqual); } }
SortedDictionaries equal: True
Wenn Sie einen Vergleich basierend auf den Werten von SortedDictionaries anstelle von Schlüsseln durchführen oder eine komplexe Vergleichslogik implementieren möchten, können Sie einen benutzerdefinierten EqualityComparer verwenden.
So können Sie es machen −
using System; using System.Collections.Generic; using System.Linq; class DictionaryComparer<TKey, TValue> : IEqualityComparer<SortedDictionary<TKey, TValue>> { public bool Equals(SortedDictionary<TKey, TValue> x, SortedDictionary<TKey, TValue> y) { // Check whether the dictionaries are equal return x.Count == y.Count && !x.Except(y).Any(); } public int GetHashCode(SortedDictionary<TKey, TValue> obj) { int hash = 0; foreach (var pair in obj) { hash ^= pair.GetHashCode(); } return hash; } } public class Program { public static void Main() { SortedDictionary<string, int> sortedDict1 = new SortedDictionary<string, int>() { {"One", 1}, {"Two", 2}, {"Three", 3} }; SortedDictionary<string, int> sortedDict2 = new SortedDictionary<string, int>() { {"One", 1}, {"Two", 2}, {"Three", 3} }; DictionaryComparer<string, int> comparer = new DictionaryComparer<string, int>(); bool areEqual = comparer.Equals(sortedDict1, sortedDict2); Console.WriteLine("SortedDictionaries equal: " + areEqual); } }
In diesem Beispiel erstellen wir einen benutzerdefinierten Gleichheitskomparator, der die IEqualityComparer-Schnittstelle implementiert. Die Equals-Methode prüft, ob zwei SortedDictionary die gleiche Anzahl von Elementen haben und ob es im ersten SortedDictionary Elemente gibt, die nicht im zweiten SortedDictionary enthalten sind.
SortedDictionaries equal: True
In C# können Sie mit der SequenceEqual-Methode oder einem benutzerdefinierten EqualityComparer überprüfen, ob zwei SortedDictionary-Objekte gleich sind. Während die SequenceEqual-Methode schnell und einfach ist, bietet ein benutzerdefinierter EqualityComparer eine flexiblere Lösung für komplexere Vergleichsanforderungen. Dieser benutzerdefinierte Komparator kann an Ihre spezifischen Anforderungen angepasst werden, einschließlich Vergleichen basierend auf Werten oder einer anderen benutzerdefinierten Logik.
Das obige ist der detaillierte Inhalt vonÜberprüfen Sie, ob zwei SortedDictionary-Objekte in C# gleich sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!