Maison > développement back-end > C++ > Comment puis-je supprimer efficacement les doublons d'une liste C #?

Comment puis-je supprimer efficacement les doublons d'une liste C #?

Susan Sarandon
Libérer: 2025-01-29 02:12:10
original
969 Les gens l'ont consulté

How Can I Efficiently Remove Duplicates from a C# List?

supprimer la liste

plusieurs méthodes d'éléments répétés En C #, la gestion de la collection est une tâche commune. Parfois, vous devez supprimer des éléments répétitifs de la liste. Il s'agit d'une demande commune dans divers scénarios de programmation, tels que le nettoyage des données ou la recherche d'une valeur unique. Heureusement, il existe plusieurs façons d'y parvenir.

linq (adapté à .net 3 et supérieur)

L'une des solutions les plus simples et les plus faciles à lire est d'utiliser LINQ (intégration du langage). Cette fonctionnalité est introduite dans .NET 3, fournissant une méthode d'instruction pour interroger et transmettre des données. Ce qui suit est un exemple de linq:

Filtrez les éléments répétitifs dans la liste

et renvoyez une nouvelle liste
<code class="language-csharp">List<T> withDupes = LoadSomeData();
List<T> noDupes = withDupes.Distinct().ToList();</code>
Copier après la connexion
, qui ne contient que des éléments uniques.

Les méthodes transforment les Distinct() générés en withDupes. noDupes ToList() Si vous utilisez déjà des expressions LINQ, cette méthode est très pratique. IEnumerable List Utilisez HashSet

Un autre choix consiste à utiliser Hashset, qui est un type de collection conçu pour une recherche rapide et une détection répétée efficace. Ce qui suit est la méthode que vous pouvez effectuer cette opération:

initialement vide. Nous avons traversé chaque projet dans et avons essayé de l'ajouter à la collection. Étant donné que HashSet n'est pas autorisé à se répéter, seul le seul projet peut être ajouté avec succès. Enfin, la collection générée utilise pour revenir à la liste.

Cette méthode fournit des performances O (n) pour les opérations d'insertion et de recherche.

<code class="language-csharp">HashSet<T> hashSet = new HashSet<T>();
foreach (var item in withDupes)
{
    hashSet.Add(item);
}
List<T> noDupes = new List<T>(hashSet);</code>
Copier après la connexion
Utilisez le dictionnaire

HashSet hashSet withDupes La troisième méthode implique l'utilisation du dictionnaire pour suivre l'élément unique: noDupes

stockage temporaire pour l'élément unique. Nous avons traversé la liste pour vérifier si chaque élément existe dans le dictionnaire. Sinon, nous l'ajoutons au dictionnaire et à la liste

.

Cette méthode fournit également une complexité O (n), mais elle doit créer des structures de données supplémentaires pour le suivi unique.

Sélectionnez la bonne méthode

<code class="language-csharp">Dictionary<T, bool> dict = new Dictionary<T, bool>();
List<T> noDupes = new List<T>();
foreach (var item in withDupes)
{
    if (!dict.ContainsKey(item))
    {
        dict.Add(item, true);
        noDupes.Add(item);
    }
}</code>
Copier après la connexion
La meilleure façon de supprimer des éléments en double dépend de vos exigences spécifiques. Si vous avez utilisé LINQ dans la bibliothèque de code, LINQ fournit une solution simple. HashSet offre des performances de recherche et d'insertion efficaces, ce qui le rend adapté à une grande collection. Cependant, il ne conserve pas l'ordre d'origine de l'élément. Enfin, la méthode du dictionnaire permet de suivre les informations liées à chaque élément unique, mais elle générera des dépenses en raison de la création de la structure des données du dictionnaire.

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