Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membandingkan Dua Senarai untuk Kesaksamaan, Mengabaikan Susunan Unsur?

Bagaimanakah Saya Boleh Membandingkan Dua Senarai untuk Kesaksamaan, Mengabaikan Susunan Unsur?

Linda Hamilton
Lepaskan: 2025-01-21 07:46:13
asal
485 orang telah melayarinya

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

Abaikan susunan elemen untuk perbandingan kesetaraan senarai

Apabila membandingkan dua List<T> objek, anda biasanya ingin menyemak sama ada elemennya adalah sama, tanpa mengira kedudukannya dalam senarai. Berikut adalah beberapa cara untuk mencapainya.

1. Kesamaan unsur dan bilangan kejadian

Jika anda memerlukan dua senarai untuk mengandungi elemen yang sama dengan bilangan kejadian yang sama, adalah disyorkan untuk mengisih sebelum membandingkan:

<code class="language-csharp">Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t))</code>
Salin selepas log masuk

2. Kaedah Pengoptimuman

Untuk meningkatkan prestasi, terutamanya apabila berurusan dengan senarai besar, anda boleh menggunakan kaedah tersuai ini, yang hanya perlu melaksanakan IEquatable:

<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>
Salin selepas log masuk

3. Mengendalikan jenis nullable

Jika elemen anda daripada jenis nullable, anda boleh menggunakan pembanding tersuai kamus:

<code class="language-csharp">var comparer = EqualityComparer<T>.Default;
var cnt = new Dictionary<T, int>(comparer);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Dua Senarai untuk Kesaksamaan, Mengabaikan Susunan Unsur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan