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

Comment trouver l'intersection de plusieurs listes à l'aide de IEnumerable.Intersect() ?

Patricia Arquette
Libérer: 2025-01-15 11:36:48
original
759 Les gens l'ont consulté

How to Find the Intersection of Multiple Lists Using IEnumerable.Intersect()?

Utilisez IEnumerable.Intersect() pour trouver l'intersection de plusieurs listes

La méthode IEnumerable.Intersect() en C# vous permet de trouver des éléments communs dans deux séquences. Mais que se passe-t-il si vous avez plusieurs listes et souhaitez identifier les éléments présents dans toutes les listes ?

Question :

Étant donné une liste de listes d'entiers :

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 };
Copier après la connexion

Comment utiliser IEnumerable.Intersect() pour trouver l'intersection de ces listes et obtenir le résultat List() { 3 } ?

Solution 1 : Agrégation HashSet

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

Cette solution utilise la méthode Aggregate() pour accumuler un HashSet qui représente l'intersection des listes. La méthode Skip(1) garantit que la première liste de listOfLists est utilisée comme valeur initiale pour le HashSet.

Solution 2 : itération HashSet

var intersection = new HashSet<int>(listOfLists.First());

foreach (var list in listOfLists.Skip(1))
{
    var intersect = new HashSet<int>(intersection);
    intersection.IntersectWith(list);
}
Copier après la connexion

Cette solution utilise également un HashSet, mais elle parcourt les listes restantes, créant un nouveau HashSet pour chaque intersection.

Considérations relatives aux performances :

Les benchmarks de performances montrent que dans la plupart des cas, la solution HashSet surpasse l'utilisation d'une liste. La différence de performances entre la méthode foreach et la méthode Aggregate est négligeable.

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!

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