Heim > Backend-Entwicklung > C++ > Wie kann ich zwei Listen auf Gleichheit vergleichen und dabei die Reihenfolge der Elemente ignorieren?

Wie kann ich zwei Listen auf Gleichheit vergleichen und dabei die Reihenfolge der Elemente ignorieren?

Linda Hamilton
Freigeben: 2025-01-21 07:46:13
Original
485 Leute haben es durchsucht

How Can I Compare Two Lists for Equality, Ignoring Element Order?

Elementreihenfolge für Listenäquivalenzvergleiche ignorieren

Wenn Sie zwei List<T> Objekte vergleichen, möchten Sie normalerweise prüfen, ob ihre Elemente gleich sind, unabhängig von ihrer Position in der Liste. Hier sind einige Möglichkeiten, dies zu erreichen.

1. Elementgleichheit und Häufigkeit des Vorkommens

Wenn Sie zwei Listen benötigen, die dieselben Elemente mit der gleichen Häufigkeit enthalten, empfiehlt es sich, vor dem Vergleich zu sortieren:

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

2. Optimierungsmethode

Um die Leistung zu verbessern, insbesondere beim Umgang mit großen Listen, können Sie diese benutzerdefinierte Methode verwenden, die nur IEquatable implementiert werden muss:

<code class="language-csharp">public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2)
{
    var cnt = new Dictionary<T, int>();
    foreach (T s in list1)
    {
        cnt[s] = cnt.ContainsKey(s) ? cnt[s] + 1 : 1;
    }
    foreach (T s in list2)
    {
        if (cnt.ContainsKey(s))
        {
            cnt[s]--;
        }
        else
        {
            return false;
        }
    }
    return cnt.Values.All(c => c == 0);
}</code>
Nach dem Login kopieren

3. Umgang mit nullbaren Typen

Wenn Ihr Element einen Nullable-Typ hat, können Sie den benutzerdefinierten Komparator eines Wörterbuchs verwenden:

<code class="language-csharp">var comparer = EqualityComparer<T>.Default;
var cnt = new Dictionary<T, int>(comparer);</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich zwei Listen auf Gleichheit vergleichen und dabei die Reihenfolge der Elemente ignorieren?. 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