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>
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>
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>
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!