Heim > Backend-Entwicklung > C++ > Wie finde ich effizient den Schnittpunkt mehrerer Listen in C#?

Wie finde ich effizient den Schnittpunkt mehrerer Listen in C#?

Patricia Arquette
Freigeben: 2025-01-15 11:49:47
Original
660 Leute haben es durchsucht

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

Bestimmen der gemeinsamen Elemente über mehrere C#-Listen hinweg

Stellen Sie sich vor, Sie haben eine Sammlung von Listen und müssen die in allen enthaltenen Elemente identifizieren. Zum Beispiel:

<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>
Nach dem Login kopieren

Das gewünschte Ergebnis ist eine Liste, die nur die Elemente enthält, die allen drei Listen gemeinsam sind: {3}.

Nutzung IEnumerable.Intersect()mit einem Listenakkumulator

Eine effektive Methode besteht darin, IEnumerable.Intersect() iterativ mit einer Liste zu verwenden, die als Akkumulator fungiert:

<code class="language-csharp">var intersection = listOfLists.Skip(1)
    .Aggregate(
        new List<int>(listOfLists.First()),
        (list, subList) => list.Intersect(subList).ToList()
    );</code>
Nach dem Login kopieren

Dieser Code beginnt mit der ersten Liste und schneidet sie dann iterativ mit jeder nachfolgenden Liste.

Einsatz IEnumerable.Intersect() mit einem HashSet-Akkumulator

Ein effizienterer Ansatz verwendet einen HashSet als Akkumulator aufgrund seiner optimierten Schnittfähigkeiten:

<code class="language-csharp">var intersection = listOfLists.Skip(1)
    .Aggregate(
        new HashSet<int>(listOfLists.First()),
        (h, e) => { h.IntersectWith(e); return h; }
    );</code>
Nach dem Login kopieren

Diese Version verwendet IntersectWith(), eine leistungsfähigere Operation für Mengen. Denken Sie daran, dass listOfLists mindestens eine Liste enthalten muss, damit dies ordnungsgemäß funktioniert.

Beide Techniken bieten effiziente Möglichkeiten, die Schnittmenge mehrerer Listen mithilfe von IEnumerable.Intersect() zu finden. Die HashSet-Methode wird im Allgemeinen wegen ihrer Leistungsvorteile beim Umgang mit größeren Datensätzen bevorzugt.

Das obige ist der detaillierte Inhalt vonWie finde ich effizient den Schnittpunkt mehrerer Listen in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage