Rumah >pembangunan bahagian belakang >C++ >Bagaimana Saya Boleh Menguruskan Kunci Pendua dalam Kamus .NET?
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
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
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!