Cara untuk mendapatkan semula berbilang kunci dengan nilai yang ditentukan daripada kamus generik
Kamus generik .NET menyediakan cara yang cekap untuk mendapatkan semula nilai yang dikaitkan dengan kunci, seperti yang ditunjukkan dalam kod berikut:
<code class="language-csharp">Dictionary<int, string> greek = new Dictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); string secondGreek = greek[2]; // Beta</code>
Walau bagaimanapun, mendapatkan semula kunci yang dikaitkan dengan nilai tertentu tidak semudah dengan kamus generik, kerana kamus generik hanya menyimpan satu pasangan nilai kunci tunggal untuk setiap kunci unik. Ini boleh mencipta cabaran apabila anda perlu mencari semua kunci yang sepadan dengan nilai tertentu, terutamanya apabila berbilang kunci mungkin dipetakan kepada nilai yang sama.
Untuk menyelesaikan masalah ini, kod berikut melaksanakan kamus dua hala yang membenarkan kunci dan nilai diperoleh dengan cara generik:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Text; class BiDictionary<TFirst, TSecond> { IDictionary<TFirst, IList<TSecond>> firstToSecond = new Dictionary<TFirst, IList<TSecond>>(); IDictionary<TSecond, IList<TFirst>> secondToFirst = new Dictionary<TSecond, IList<TFirst>>(); // ... (方法和属性的实现) ... }</code>
Kamus dua hala ini mengekalkan dua set pemetaan nilai kunci: satu ialah senarai daripada kunci pertama hingga nilai kedua, dan satu lagi ialah senarai daripada nilai kedua hingga kunci pertama. Ini membolehkan pengambilan semula kunci dan nilai dua arah yang cekap.
Sebagai contoh, pertimbangkan kamus perkataan Yunani, di mana setiap huruf Yunani diberikan nilai berangka. Menggunakan kamus dua hala, anda boleh mendapatkan huruf Yunani dengan mudah sepadan dengan nilai berangka yang diberikan seperti ini:
<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); greek.Add(5, "Beta"); // 检索对应于值“Beta”的希腊字母 IList<int> betaKeys = greek.GetBySecond("Beta"); // 显示结果 Console.WriteLine("Keys for \"Beta\":"); foreach (int key in betaKeys) { Console.WriteLine(key); }</code>
Kaedah ini mengendalikan nilai pendua secara elegan dengan mengembalikan senarai kunci yang sepadan dengan nilai yang ditentukan. Ia menunjukkan kepelbagaian kamus dua hala apabila berurusan dengan kamus di mana berbilang kunci boleh dipetakan kepada nilai yang sama.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Berbilang Kekunci Secara Cekap Dikaitkan dengan Nilai Yang Sama dalam Kamus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!