Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencari Persimpangan Pelbagai Senarai dengan Cekap dalam C#?

Bagaimana untuk Mencari Persimpangan Pelbagai Senarai dengan Cekap dalam C#?

Patricia Arquette
Lepaskan: 2025-01-15 11:49:47
asal
662 orang telah melayarinya

How to Efficiently Find the Intersection of Multiple Lists in C#?

Menentukan Elemen Biasa Merentasi Berbilang Senarai C#

Bayangkan anda mempunyai koleksi senarai dan perlu mengenal pasti elemen yang terdapat dalam kesemuanya. Contohnya:

<code class="language-csharp">var list1 = new List<int>() { 1, 2, 3 };
var list2 = new List<int>() { 2, 3, 4 };
var list3 = new List<int>() { 3, 4, 5 };
var listOfLists = new List<List<int>>() { list1, list2, list3 };</code>
Salin selepas log masuk

Hasil yang diingini ialah senarai yang mengandungi hanya elemen yang biasa kepada ketiga-tiga senarai: {3}.

Memanfaatkan IEnumerable.Intersect() dengan Akumulator Senarai

Satu kaedah yang berkesan melibatkan penggunaan IEnumerable.Intersect() secara berulang dengan senarai bertindak sebagai penumpuk:

<code class="language-csharp">var intersection = listOfLists.Skip(1)
    .Aggregate(
        new List<int>(listOfLists.First()),
        (list, subList) => list.Intersect(subList).ToList()
    );</code>
Salin selepas log masuk

Kod ini bermula dengan senarai pertama dan kemudian bersilang secara berulang dengan setiap senarai berikutnya.

Menggunakan IEnumerable.Intersect() dengan Akumulator HashSet

Pendekatan yang lebih cekap menggunakan HashSet sebagai penumpuk, kerana keupayaan persimpangan yang dioptimumkan:

<code class="language-csharp">var intersection = listOfLists.Skip(1)
    .Aggregate(
        new HashSet<int>(listOfLists.First()),
        (h, e) => { h.IntersectWith(e); return h; }
    );</code>
Salin selepas log masuk

Versi ini menggunakan IntersectWith(), operasi yang lebih berprestasi untuk set. Ingat, listOfLists mesti mengandungi sekurang-kurangnya satu senarai untuk ini berfungsi dengan betul.

Kedua-dua teknik menyediakan cara yang cekap untuk mencari persilangan berbilang senarai menggunakan IEnumerable.Intersect(). Kaedah HashSet biasanya lebih disukai kerana kelebihan prestasinya apabila berurusan dengan set data yang lebih besar.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Persimpangan Pelbagai Senarai dengan Cekap dalam 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