Maison > développement back-end > C++ > Comment puis-je comparer efficacement deux listes non ordonnées avec des éléments en double en C# ?

Comment puis-je comparer efficacement deux listes non ordonnées avec des éléments en double en C# ?

Linda Hamilton
Libérer: 2025-01-21 07:57:08
original
364 Les gens l'ont consulté

How Can I Efficiently Compare Two Unordered Lists with Duplicate Elements in C#?

Comparez efficacement des listes non ordonnées avec les mêmes éléments et occurrences en C#

En C#, comparer deux listes pour l'égalité peut être difficile lorsque l'ordre des éléments n'a pas d'importance. Pour les listes contenant plusieurs éléments identiques, la détermination de l’équivalence devient plus complexe.

Considérons la tâche de comparer les objets List list1 et list2, où le nombre d'occurrences de chaque élément doit être le même dans les deux listes. Pour ce faire, une approche en plusieurs étapes est nécessaire.

Comparaison après tri

Une approche simple consiste à trier les deux listes avant de les comparer. À l'aide de l'extrait de code suivant, vous pouvez vérifier l'égalité des éléments et l'indépendance de l'ordre :

<code class="language-c#">Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t))</code>
Copier après la connexion

Comparaison basée sur un dictionnaire

Pour améliorer les performances, pensez à utiliser la méthode ScrambledEquals, qui utilise un dictionnaire pour compter le nombre d'occurrences d'un élément :

<code class="language-c#">public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2)</code>
Copier après la connexion

Cette méthode utilise un dictionnaire rempli de clés représentant des éléments uniques et des valeurs représentant le nombre d'occurrences de chaque élément dans la liste1. Ensuite, il parcourt list2, décrémentant le nombre d’éléments correspondants. Si un élément de list2 n'est pas trouvé dans le dictionnaire ou si le nombre ne correspond pas, la fonction renvoie false. Enfin, cela garantit que tous les comptes du dictionnaire sont nuls, ce qui signifie qu'il y a des occurrences égales dans les deux listes.

Gestion des types nullables

Pour prendre en charge les types nullables ou tout type de données en tant que clés de dictionnaire, fournissez un comparateur personnalisé dans la méthode ScrambledEquals :

<code class="language-c#">public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2, IEqualityComparer<T> comparer)</code>
Copier après la connexion

En combinant cette fonctionnalité, vous pouvez comparer efficacement les listes quels que soient l'ordre et le nombre d'éléments.

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:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal