Cara yang cekap untuk membandingkan senarai besar untuk mencari perbezaan
Kaedah Except
ialah pilihan terbaik apabila berurusan dengan perbandingan perbezaan senarai generik yang sangat besar. Kaedah ini jauh lebih cekap daripada pertanyaan LINQ yang disediakan dalam artikel (kerumitan masa ialah O(N * M)).
Gunakan kaedah Kecuali
KaedahExcept
mengembalikan senarai baharu yang mengandungi elemen daripada senarai pertama yang tidak terdapat dalam senarai kedua. Gunakan kaedah ini dengan kedua-dua senarai untuk mendapatkan dua senarai baharu:
<code>var firstNotSecond = list1.Except(list2).ToList(); var secondNotFirst = list2.Except(list1).ToList();</code>
Kerumitan masa kaedah ini ialah O(N M), yang jauh lebih pantas daripada kaedah sebelumnya.
Gabung hasil
Untuk menentukan sama ada dua senarai adalah sama, anda boleh menggabungkan dua senarai hasil:
<code>return !firstNotSecond.Any() && !secondNotFirst.Any();</code>
Nota tentang elemen berulang
Tidak seperti kod asal, kaedah Except
hanya melaporkan elemen pendua dalam senarai sekali. Sebagai contoh, jika senarai1 mengandungi [1, 2, 2, 2, 3] dan senarai2 mengandungi [1], kemudian menggunakan kaedah Except
, hasil "elemen dalam senarai1 tetapi bukan dalam senarai2" akan menjadi [2, 3 ] , manakala kod asal akan melaporkan [2, 2, 2, 3].
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Senarai Besar dengan Cekap untuk Mencari Percanggahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!