SortedDictionary en C# est une implémentation basée sur un arbre binaire qui maintient ses éléments dans l'ordre des clés. Il s'agit d'une collection de paires clé/valeur triées par clé. Cet article vous guidera étape par étape sur la façon de vérifier si deux objets SortedDictionary sont égaux en C#. Enfin, vous apprendrez à déterminer si deux objets SortedDictionary contiennent les mêmes éléments et sont égaux.
Avant de continuer, il est crucial de comprendre ce qu'est un SortedDictionary. Il s'agit d'une collection basée sur une arborescence binaire en C# qui stocke les paires clé-valeur dans l'ordre trié des clés. Il fait partie de l'espace de noms System.Collections.Generic.
Ceci est un exemple de SortedDictionary -
SortedDictionary<string, int> sortedDict = new SortedDictionary<string, int>() { {"One", 1}, {"Two", 2}, {"Three", 3} };
L'un des moyens les plus simples de vérifier si deux objets SortedDictionary sont égaux est d'utiliser la méthode SequenceEqual de l'espace de noms System.Linq. Étant donné que SortedDictionary conserve automatiquement l'ordre des éléments en fonction de la clé, vous pouvez utiliser SequenceEqual directement à des fins de comparaison.
Voici un extrait de code démontrant cela -
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
Si vous souhaitez comparer en fonction des valeurs de SortedDictionaries au lieu de clés, ou si vous souhaitez implémenter une logique de comparaison complexe, vous pouvez utiliser un EqualityComparer personnalisé.
Voici comment procéder −
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); } }
Dans cet exemple, nous créons un comparateur d'égalité personnalisé qui implémente l'interface IEqualityComparer. La méthode Equals vérifie si deux SortedDictionary ont le même nombre d'éléments et s'il y a des éléments dans le premier SortedDictionary qui ne sont pas dans le deuxième SortedDictionary.
SortedDictionaries equal: True
En C#, vous pouvez vérifier si deux objets SortedDictionary sont égaux à l'aide de la méthode SequenceEqual ou d'un EqualityComparer personnalisé. Bien que la méthode SequenceEqual soit rapide et simple, un EqualityComparer personnalisé fournit une solution plus flexible pour des exigences de comparaison plus complexes. Ce comparateur personnalisé peut être personnalisé selon vos besoins spécifiques, y compris des comparaisons basées sur des valeurs ou toute autre logique personnalisée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!