Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mendapatkan Berbilang Kekunci Secara Cekap Dikaitkan dengan Nilai Yang Sama dalam Kamus?

Bagaimana untuk Mendapatkan Berbilang Kekunci Secara Cekap Dikaitkan dengan Nilai Yang Sama dalam Kamus?

Susan Sarandon
Lepaskan: 2025-01-21 03:22:16
asal
403 orang telah melayarinya

How to Efficiently Retrieve Multiple Keys Associated with the Same Value in a Dictionary?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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