Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya dapat menghapuskan pendua dari senarai C#?

Bagaimanakah saya dapat menghapuskan pendua dari senarai C#?

Susan Sarandon
Lepaskan: 2025-01-29 02:12:10
asal
969 orang telah melayarinya

How Can I Efficiently Remove Duplicates from a C# List?

Buang senarai

Beberapa kaedah item berulang Dalam C#, pengurusan pengumpulan adalah tugas yang sama. Kadang -kadang anda perlu memadam elemen berulang dari senarai. Ini adalah permintaan yang sama dalam pelbagai senario pengaturcaraan, seperti pembersihan data atau mencari nilai yang unik. Nasib baik, terdapat beberapa cara untuk mencapai matlamat ini.

linq (sesuai untuk .net 3 dan ke atas)

Salah satu penyelesaian yang paling mudah dan mudah -untuk menggunakan LINQ (Integrasi Bahasa). Ciri ini diperkenalkan dalam .NET 3, menyediakan kaedah pernyataan untuk menanyakan dan menyampaikan data. Berikut adalah contoh LINQ:

Tapis unsur -unsur berulang dalam senarai

, dan kembalikan senarai baru
<code class="language-csharp">List<T> withDupes = LoadSomeData();
List<T> noDupes = withDupes.Distinct().ToList();</code>
Salin selepas log masuk
, yang hanya mengandungi unsur -unsur yang unik.

kaedah mengubah yang dihasilkan Distinct() ke withDupes. noDupes ToList() Jika anda sudah menggunakan ungkapan LINQ, kaedah ini sangat mudah. IEnumerable List Gunakan hashset

Pilihan lain ialah menggunakan Hashset, yang merupakan jenis koleksi yang direka untuk pencarian pantas dan pengesanan berulang yang cekap. Berikut adalah kaedah yang boleh anda lakukan operasi ini:

Pada mulanya kosong. Kami melintasi setiap projek dalam dan cuba menambahkannya ke koleksi. Oleh kerana hashset tidak dibenarkan mengulangi, hanya satu -satunya projek yang dapat ditambah dengan jayanya. Akhirnya, penggunaan koleksi yang dihasilkan untuk kembali ke senarai.

Kaedah ini menyediakan prestasi O (n) untuk penyisipan dan operasi carian.

<code class="language-csharp">HashSet<T> hashSet = new HashSet<T>();
foreach (var item in withDupes)
{
    hashSet.Add(item);
}
List<T> noDupes = new List<T>(hashSet);</code>
Salin selepas log masuk
Gunakan Kamus

HashSet hashSet withDupes Kaedah ketiga melibatkan penggunaan kamus untuk mengesan elemen unik: noDupes

Penyimpanan sementara untuk elemen yang unik. Kami melintasi senarai untuk memeriksa sama ada setiap item wujud dalam kamus. Jika tidak, kami menambahnya ke senarai kamus dan

.

Kaedah ini juga menyediakan kerumitan O (n), tetapi ia perlu membuat struktur data tambahan untuk menjejaki secara unik.

Pilih kaedah yang betul

<code class="language-csharp">Dictionary<T, bool> dict = new Dictionary<T, bool>();
List<T> noDupes = new List<T>();
foreach (var item in withDupes)
{
    if (!dict.ContainsKey(item))
    {
        dict.Add(item, true);
        noDupes.Add(item);
    }
}</code>
Salin selepas log masuk
Cara terbaik untuk memadam item pendua bergantung pada keperluan khusus anda. Jika anda telah menggunakan LINQ dalam perpustakaan kod, LINQ menyediakan penyelesaian yang mudah. Hashset menyediakan prestasi carian dan penyisipan yang cekap, menjadikannya sesuai untuk koleksi besar. Walau bagaimanapun, ia tidak mengekalkan urutan asal elemen. Akhirnya, kaedah kamus membolehkan menjejaki maklumat tambahan yang berkaitan dengan setiap elemen unik, tetapi ia akan menghasilkan beberapa perbelanjaan kerana mewujudkan struktur data kamus.

Atas ialah kandungan terperinci Bagaimanakah saya dapat menghapuskan pendua dari senarai C#?. 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