Heim > Backend-Entwicklung > C++ > Wie kann ich zwei ungeordnete Listen mit doppelten Elementen in C# effizient vergleichen?

Wie kann ich zwei ungeordnete Listen mit doppelten Elementen in C# effizient vergleichen?

Linda Hamilton
Freigeben: 2025-01-21 07:57:08
Original
323 Leute haben es durchsucht

How Can I Efficiently Compare Two Unordered Lists with Duplicate Elements in C#?

Vergleichen Sie ungeordnete Listen mit denselben Elementen und Vorkommen in C# effizient

In C# kann der Vergleich zweier Listen auf Gleichheit eine Herausforderung sein, wenn die Reihenfolge der Elemente keine Rolle spielt. Bei Listen mit mehreren identischen Elementen wird die Bestimmung der Äquivalenz komplexer.

Betrachten Sie die Aufgabe, die Listenobjekte list1 und list2 zu vergleichen, wobei die Anzahl der Vorkommen jedes Elements in beiden Listen gleich sein sollte. Hierzu ist ein mehrstufiges Vorgehen erforderlich.

Vergleich nach Sortierung

Ein einfacher Ansatz besteht darin, beide Listen vor dem Vergleich zu sortieren. Mithilfe des folgenden Codeausschnitts können Sie die Elementgleichheit und Reihenfolgenunabhängigkeit überprüfen:

<code class="language-c#">Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t))</code>
Nach dem Login kopieren

Wörterbuchbasierter Vergleich

Um die Leistung zu verbessern, sollten Sie die ScrambledEquals-Methode verwenden, die ein Wörterbuch verwendet, um die Anzahl der Vorkommen eines Elements zu zählen:

<code class="language-c#">public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2)</code>
Nach dem Login kopieren
Diese Methode verwendet ein Wörterbuch, das mit Schlüsseln gefüllt ist, die eindeutige Elemente darstellen, und Werten, die die Häufigkeit des Vorkommens jedes Elements in Liste1 darstellen. Anschließend wird list2 durchlaufen und die Anzahl der übereinstimmenden Elemente verringert. Wenn ein Element in Liste2 nicht im Wörterbuch gefunden wird oder die Anzahl nicht übereinstimmt, gibt die Funktion „false“ zurück. Schließlich wird sichergestellt, dass alle Zählungen im Wörterbuch Null sind, was bedeutet, dass in beiden Listen gleiche Vorkommen vorhanden sind.

Verarbeitung nullfähiger Typen

Um nullfähige Typen oder beliebige Datentypen als Wörterbuchschlüssel zu berücksichtigen, stellen Sie einen benutzerdefinierten Komparator in der ScrambledEquals-Methode bereit:

<code class="language-c#">public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2, IEqualityComparer<T> comparer)</code>
Nach dem Login kopieren
Durch die Kombination dieser Funktion können Sie Listen unabhängig von der Reihenfolge und Anzahl der Elemente effizient vergleichen.

Das obige ist der detaillierte Inhalt vonWie kann ich zwei ungeordnete Listen mit doppelten Elementen in C# effizient vergleichen?. 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