Collection générique qui permet même clé
Collections comme HashTable
et Dictionary
n'autorise pas l'ajout de valeur avec la même clé, mais je veux stocker les mêmes valeurs avec les mêmes touches dans un Collection<int,string>
.
Est-il intégré dans la collection qui me permet de faire cela?
- Vous pouvez utiliser
Dictionary<int,IEnumerable<string>>
- Que comptez-vous faire? Sachant que la bonne structure de données à faire a beaucoup moins à voir avec ce que les données comme il le fait, comment on y accède? Êtes-vous constamment à obtenir les valeurs pour chaque clé, vous êtes généralement d'effectuer les opérations d'agrégation sur tous/beaucoup de valeurs, êtes-vous de l'ajout/suppression d'éléments, si oui, sont-elles arbitraires, ou sur la base de certains "démarrer" et/ou "fin", à la collecte doivent être commandés, etc.
- N-uplet.Item1 est une classe avec beaucoup de propriétés et de Tuple.Item2 est un
string
contenant "Gauche", "Droite", "en Avant" ou "Arrière". Il ne peut pas être plus de 10 éléments dans la collection. - Je suis fondamentalement de stocker tous les
Tuple.Item1
les éléments qui ontTuple.Item2 = "Left"
dans une collection différente, et ainsi de suite.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un
List<T>
contenant une classe personnalisée, ou même unList<Tuple<int,string>>
.Alternativement, vous pouvez faire un
Dictionary<int, List<string>>
(ou une autre collection de string), et de remplir les valeurs de cette façon.Cela a l'avantage de fournir rapidement des recherches par clé, tout en permettant à de multiples valeurs par clé. Cependant, il est un peu plus compliqué à ajouter des valeurs plus tard. Si avec cela, j'avais encapsuler l'ajout de valeurs dans une méthode, c'est à dire:
Utiliser un
List
avec une coutumeClass
.En bref: La meilleure façon de faire serait un générique
List<T>
collection, tandis que les skiping laArrayList
classe. Parce que, il y a quelques facteurs de performance que vous devez prendre en compte.En outre, vous pouvez également utiliser
List<KeyValuePair<string,int>>
.Cela permettra de stocker une liste de
KeyValuePair
's qui peut être double.Au moment de décider d'utiliser le
List<T> or ArrayList
de classe, qui ont des fonctionnalités similaires, souvenez-vous que laList<T>
classe fonctionne mieux dans la plupart des cas et est de type sécurisé. Si un type de référence est utilisé pour le type T de laList<T>
classe, le comportement des deux classes est identique. Toutefois, si un type de valeur est utilisé pour le type T, vous devez tenir compte de la mise en œuvre et de la boxe questions.Comme référence: vous pouvez utiliser l'article MSDN - Liste De Classe.
ArrayList
sauf si vous êtes forcé à travers l'interaction avec une application existante. Il peut être entièrement séparés des structures appropriées, au-delà d'unList
bien. (Il n'y a pas suffisamment d'informations pour savoir.)ArrayList
. Il n'est même pas une option je considère, ou présente lorsque l'on considère une structure de données appropriée. Vous l'utilisez si vous êtes forcés, et seulement alors.