Récupérer plusieurs clés pour une valeur donnée à partir d'un dictionnaire générique
Récupérer une valeur basée sur une clé donnée à partir d'un dictionnaire générique .NET est très simple en utilisant la syntaxe de l'indexeur. Cependant, comme il peut y avoir plusieurs clés ayant la même valeur, récupérer la clé correspondant à une valeur spécifiée peut s'avérer plus difficile.
Introduction à la structure des données BiDictionary
Pour résoudre ce problème, la structure de données BiDictionary a été développée, permettant un mappage bidirectionnel entre les clés et les valeurs. Il maintient deux dictionnaires internes :
Détails de mise en œuvre
La classe BiDictionary fournit des méthodes pour ajouter des paires clé-valeur et récupérer des valeurs basées sur l'un ou l'autre type de clé. Par exemple :
<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); greek.Add(5, "Beta"); IList<int> betaKeys = greek["Beta"]; // 返回 [2, 5]</code>
Cette implémentation utilise une liste vide comme valeur de retour par défaut pour les clés inexistantes, garantissant que vous recevez toujours une liste, même si elle est vide.
Indexeur personnalisable
Pour plus de commodité, BiDictionary comprend des indexeurs personnalisables qui fournissent un accès direct au dictionnaire interne en fonction du type de clé appelante. Cela simplifie l'accès aux valeurs en vous permettant d'utiliser la syntaxe de l'indexeur :
<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); string secondGreek = greek[2]; // 返回 "Beta"</code>
Exemple d'utilisation
Le code fourni démontre la fonctionnalité de BiDictionary :
<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); greek.Add(5, "Beta"); ShowEntries(greek, "Alpha"); // 打印 "Alpha: [1]" ShowEntries(greek, "Beta"); // 打印 "Beta: [2, 5]" ShowEntries(greek, "Gamma"); // 打印 "Gamma: []"</code>
Cet exemple montre comment récupérer la clé correspondant à une valeur donnée, et il gère gracieusement le cas de valeurs inexistantes en renvoyant une liste vide.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!