Rumah >pembangunan bahagian belakang >C++ >Bagaimana Saya Boleh Menguruskan Kunci Pendua dalam Kamus .NET?

Bagaimana Saya Boleh Menguruskan Kunci Pendua dalam Kamus .NET?

Patricia Arquette
Patricia Arquetteasal
2024-12-30 18:21:09478semak imbas

How Can I Manage Duplicate Keys in .NET Dictionaries?

Menguruskan Kunci Pendua dalam .NET Kamus

Menguruskan kunci pendua dalam kamus merupakan cabaran biasa dalam banyak senario pengaturcaraan. Dalam perpustakaan kelas asas .NET, kamus biasanya menguatkuasakan kekangan keunikan pada kunci, melarang penyimpanan berbilang nilai yang dikaitkan dengan kunci yang sama. Walau bagaimanapun, terdapat cara untuk mengatasi had ini dan menampung kunci pendua dalam beberapa kes.

Menggunakan Kelas Tersuai

Satu pendekatan ialah mencipta kelas kamus tersuai yang membenarkan kunci pendua. Seperti yang dinyatakan dalam soalan, kelas seperti Kamus> boleh digunakan untuk menyimpan berbilang nilai untuk kunci yang diberikan. Walau bagaimanapun, bekerja dengan struktur data sedemikian boleh menyusahkan.

Kelas Carian dalam .NET 3.5 dan Ke Atas

Jika anda menggunakan .NET 3.5 atau lebih baru, Kelas carian menyediakan penyelesaian yang lebih elegan. Kelas Lookup ialah jenis generik yang mencipta koleksi kunci dan nilai sepadannya. Yang penting, ia membenarkan kunci pendua dan mengumpulkan nilai yang dikaitkan dengan kunci yang sama.

Anda boleh membuat contoh Carian menggunakan kaedah sambungan Enumerable.ToLookup. Kaedah ini mengambil urutan pasangan nilai kunci dan mengembalikan Carian dengan kunci sebagai kunci utama dan nilai yang disimpan dalam koleksi masing-masing.

var lookup = sequence.ToLookup(keySelector, valueSelector);

Sebagai contoh, kod berikut mencipta Carian daripada kamus yang kuncinya ialah rentetan dan nilainya ialah senarai integer:

var dictionary = new Dictionary<string, List<int>> { { "key1", new List<int> { 1, 2 } }, { "key2", new List<int> { 3, 4 } } };
var lookup = dictionary.ToLookup(x => x.Key, x => x.Value);

Setelah anda mempunyai contoh Carian, anda boleh mengakses nilai yang dikaitkan dengan kunci menggunakan operator [] atau kaedah GetValues. Pengendali [] mengembalikan senarai nilai, manakala GetValues ​​mengembalikan IEnumerable untuk prestasi yang lebih baik apabila mengulangi sebilangan besar nilai.

Penghadan Kelas Carian

Adalah penting untuk ambil perhatian bahawa kelas Carian tidak boleh diubah. Setelah dibuat, anda tidak boleh menambah atau mengalih keluar kunci atau nilai. Walau bagaimanapun, anda boleh membuat contoh Carian baharu dengan perubahan yang diingini. Selain itu, kelas Lookup tidak menyokong pengubahsuaian serentak. Jika anda memerlukan akses serentak, pertimbangkan untuk menggunakan ConcurrentDictionary.

Kesimpulan

Walaupun perpustakaan kelas asas .NET tidak menyediakan jenis kamus terbina dalam yang secara jelas menyokong pendua kunci, kelas Lookup dalam .NET 3.5 dan ke atas menawarkan penyelesaian yang mudah dan cekap untuk mengumpulkan dan mendapatkan semula nilai yang berkaitan dengan kunci pendua.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Menguruskan Kunci Pendua dalam Kamus .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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