Maison > développement back-end > C++ > Comment IEnumerable.Intersect() peut-il trouver efficacement l'intersection de plusieurs listes ?

Comment IEnumerable.Intersect() peut-il trouver efficacement l'intersection de plusieurs listes ?

Patricia Arquette
Libérer: 2025-01-15 11:14:45
original
682 Les gens l'ont consulté

How Can IEnumerable.Intersect() Efficiently Find the Intersection of Multiple Lists?

Trouver efficacement l'intersection de plusieurs listes : méthode IEnumerable.Intersect()

En programmation, déterminer l'intersection de plusieurs listes est un problème courant. Ce problème peut être facilement résolu à l'aide de la puissante méthode IEnumerable.Intersect() de .NET.

Supposons le scénario suivant : nous avons une liste de listes et nous voulons trouver des éléments présents dans toutes les listes. Par exemple, étant donné trois listes :

<code class="language-csharp">var list1 = new List<int>() { 1, 2, 3 };
var list2 = new List<int>() { 2, 3, 4 };
var list3 = new List<int>() { 3, 4, 5 };</code>
Copier après la connexion

L'intersection attendue sera la liste :

<code class="language-csharp">{ 3 }</code>
Copier après la connexion

Cette intersection peut être calculée efficacement en utilisant IEnumerable.Intersect(). Cependant, il est important de noter que cette méthode nous oblige à fournir un IEnumerable<T> en entrée.

Pour satisfaire cette exigence, nous pouvons regrouper plusieurs IEnumerable<T> objets en une seule liste, comme indiqué dans la solution suivante :

<code class="language-csharp">var listOfLists = new List<List<int>>() { list1, list2, list3 };
var intersection = listOfLists
    .Skip(1)
    .Aggregate(
        new HashSet<int>(listOfLists.First()),
        (h, e) => { h.IntersectWith(e); return h; }
    );</code>
Copier après la connexion

Ce code parcourt les listes de listOfLists (sauf la première liste) et met à jour HashSet.IntersectWith() avec l'intersection de HashSet avec la liste actuelle. Ce processus efficace aboutit finalement à l’intersection souhaitée, stockée dans la variable intersection.

Cette solution exploite efficacement HashSet, qui est optimisé pour les opérations d'intersection rapides. De plus, le code est clair et concis, ce qui le rend idéal pour cette tâche.

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