Maison >développement back-end >C++ >Comment puis-je gérer les clés en double dans les dictionnaires .NET ?
Gestion des clés en double dans les dictionnaires .NET
La gestion des clés en double dans les dictionnaires est un défi courant dans de nombreux scénarios de programmation. Dans la bibliothèque de classes de base .NET, les dictionnaires appliquent généralement une contrainte d'unicité sur les clés, interdisant le stockage de plusieurs valeurs associées à la même clé. Cependant, il existe des moyens de surmonter cette limitation et de gérer les clés en double dans certains cas.
Utilisation d'une classe personnalisée
Une approche consiste à créer une classe de dictionnaire personnalisée qui permet clés en double. Comme mentionné dans la question, une classe comme Dictionary
Classe de recherche dans .NET 3.5 et versions ultérieures
Si vous utilisez .NET 3.5 ou version ultérieure, le La classe Lookup fournit une solution plus élégante. La classe Lookup est un type générique qui crée une collection de clés et leurs valeurs correspondantes. Surtout, il permet la duplication des clés et regroupe les valeurs associées à la même clé.
Vous pouvez créer une instance Lookup à l'aide de la méthode d'extension Enumerable.ToLookup. Cette méthode prend une séquence de paires clé-valeur et renvoie une recherche avec les clés comme clé primaire et les valeurs stockées dans leurs collections respectives.
var lookup = sequence.ToLookup(keySelector, valueSelector);
Par exemple, le code suivant crée une recherche à partir d'un dictionnaire où les clés sont des chaînes et les valeurs sont des listes d'entiers :
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);
Une fois que vous disposez d'une instance Lookup, vous pouvez accéder aux valeurs associées à une clé à l'aide de l'opérateur [] ou la méthode GetValues. L'opérateur [] renvoie une liste de valeurs, tandis que GetValues renvoie un IEnumerable
Limitations de la classe Lookup
Il est important de noter que la classe Lookup est immuable. Une fois créé, vous ne pouvez pas ajouter ou supprimer des clés ou des valeurs. Cependant, vous pouvez créer une nouvelle instance de recherche avec les modifications souhaitées. De plus, la classe Lookup ne prend pas en charge les modifications simultanées. Si vous avez besoin d'un accès simultané, envisagez d'utiliser un ConcurrentDictionary.
Conclusion
Bien que la bibliothèque de classes de base .NET ne fournisse pas de type de dictionnaire intégré prenant explicitement en charge les doublons clés, la classe Lookup dans .NET 3.5 et supérieur offre une solution pratique et efficace pour regrouper et récupérer les valeurs associées aux clés en double.
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!