Vérifiez si deux objets SortedDictionary sont égaux en C#

WBOY
Libérer: 2023-08-31 15:25:09
avant
826 Les gens l'ont consulté

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

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.

Comprendre SortedDictionary en C#

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}
};
Copier après la connexion

Utilisez SequenceEqual pour comparer deux objets SortedDictionary

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.

Exemple

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);
   }
}
Copier après la connexion

Sortie

SortedDictionaries equal: True
Copier après la connexion
Copier après la connexion

Utilisez EqualityComparer personnalisé

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é.

Exemple

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);
   }
}
Copier après la connexion

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.

Sortie

SortedDictionaries equal: True
Copier après la connexion
Copier après la connexion

Conclusion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!