supprimer la liste
plusieurs méthodes d'éléments répétés
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>
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
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>
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>
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!