Überprüfen Sie, ob zwei SortedDictionary-Objekte in C# gleich sind

WBOY
Freigeben: 2023-08-31 15:25:09
nach vorne
891 Leute haben es durchsucht

在 C# 中检查两个 SortedDictionary 对象是否相等

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.

SortedDictionary in C# verstehen

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}
};
Nach dem Login kopieren

Verwenden Sie SequenceEqual, um zwei SortedDictionary-Objekte zu vergleichen

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.

Beispiel

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);
   }
}
Nach dem Login kopieren

Ausgabe

SortedDictionaries equal: True
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden Sie den benutzerdefinierten EqualityComparer

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.

Beispiel

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);
   }
}
Nach dem Login kopieren

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.

Ausgabe

SortedDictionaries equal: True
Nach dem Login kopieren
Nach dem Login kopieren

Fazit

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage