Maison > développement back-end > C++ > Comment trouver efficacement l'intersection de plusieurs listes en C# ?

Comment trouver efficacement l'intersection de plusieurs listes en C# ?

Patricia Arquette
Libérer: 2025-01-15 11:49:47
original
662 Les gens l'ont consulté

How to Efficiently Find the Intersection of Multiple Lists in C#?

Détermination des éléments communs dans plusieurs listes C#

Imaginez que vous ayez une collection de listes et que vous ayez besoin d'identifier les éléments présents dans chacune d'elles. Par exemple :

<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 };
var listOfLists = new List<List<int>>() { list1, list2, list3 };</code>
Copier après la connexion

Le résultat souhaité est une liste contenant uniquement les éléments communs aux trois listes : {3}.

Tirer parti de IEnumerable.Intersect() avec un accumulateur de liste

Une méthode efficace consiste à utiliser IEnumerable.Intersect() de manière itérative avec une liste faisant office d'accumulateur :

<code class="language-csharp">var intersection = listOfLists.Skip(1)
    .Aggregate(
        new List<int>(listOfLists.First()),
        (list, subList) => list.Intersect(subList).ToList()
    );</code>
Copier après la connexion

Ce code commence par la première liste puis la croise de manière itérative avec chaque liste suivante.

Employer IEnumerable.Intersect() avec un accumulateur HashSet

Une approche plus efficace utilise un HashSet comme accumulateur, en raison de ses capacités d'intersection optimisées :

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

Cette version utilise IntersectWith(), une opération plus performante pour les ensembles. N'oubliez pas que listOfLists doit contenir au moins une liste pour que cela fonctionne correctement.

Les deux techniques offrent des moyens efficaces de trouver l'intersection de plusieurs listes à l'aide de IEnumerable.Intersect(). La méthode HashSet est généralement préférée pour ses avantages en termes de performances lorsqu'il s'agit de jeux de données plus volumineux.

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