Heim > Backend-Entwicklung > C++ > Wie kann IEnumerable.Intersect() effizient den Schnittpunkt mehrerer Listen finden?

Wie kann IEnumerable.Intersect() effizient den Schnittpunkt mehrerer Listen finden?

Patricia Arquette
Freigeben: 2025-01-15 11:14:45
Original
637 Leute haben es durchsucht

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

Ermitteln Sie effizient die Schnittmenge mehrerer Listen: IEnumerable.Intersect()-Methode

Bei der Programmierung ist die Bestimmung der Schnittmenge mehrerer Listen ein häufiges Problem. Dieses Problem kann mithilfe der leistungsstarken IEnumerable.Intersect()-Methode von .NET leicht gelöst werden.

Nehmen Sie das folgende Szenario an: Wir haben eine Liste mit Listen und möchten Elemente finden, die in allen Listen vorhanden sind. Beispiel: Gegeben sind drei Listen:

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

Der erwartete Schnittpunkt ist die Liste:

<code class="language-csharp">{ 3 }</code>
Nach dem Login kopieren

Dieser Schnittpunkt kann mit IEnumerable.Intersect() effizient berechnet werden. Es ist jedoch wichtig zu beachten, dass diese Methode erfordert, dass wir ein IEnumerable<T> als Eingabe bereitstellen.

Um diese Anforderung zu erfüllen, können wir mehrere IEnumerable<T>-Objekte in einer einzigen Liste zusammenfassen, wie in der folgenden Lösung gezeigt:

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

Dieser Code durchläuft die Listen in listOfLists (mit Ausnahme der ersten Liste) und aktualisiert HashSet.IntersectWith() mit dem Schnittpunkt von HashSet mit der aktuellen Liste. Dieser effiziente Prozess führt letztendlich zum gewünschten Schnittpunkt, der in der Variablen intersection gespeichert ist.

Diese Lösung nutzt effektiv HashSet, das für schnelle Kreuzungsvorgänge optimiert ist. Darüber hinaus ist der Code sauber und prägnant, was ihn ideal für diese Aufgabe macht.

Das obige ist der detaillierte Inhalt vonWie kann IEnumerable.Intersect() effizient den Schnittpunkt mehrerer Listen finden?. 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