Maison >développement back-end >C++ >Comment puis-je gérer les clés en double dans les dictionnaires .NET ?

Comment puis-je gérer les clés en double dans les dictionnaires .NET ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-30 18:21:09478parcourir

How Can I Manage Duplicate Keys in .NET Dictionaries?

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> peut être utilisé pour stocker plusieurs valeurs pour une clé donnée. Cependant, travailler avec une telle structure de données peut s'avérer peu pratique.

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 pour de meilleures performances lors de l'itération sur un grand nombre de valeurs.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn