Comment parcourir les clés d'une table de hachage dans l'ordre alphabétique?
Quel est le moyen le plus facile de traverser une table de hachage avec les touches dans l'ordre alphabétique croissant?
OriginalL'auteur Pavel Bastov | 2009-05-12
Vous devez vous connecter pour publier un commentaire.
C'est assez dépendant de ce que le type de la clé. Mais supposons un moment qu'ils sont des chaînes de caractères. Vous pouvez utiliser les éléments suivants requête LINQ
Pour les structures plus complexes que la requête LINQ n'est que légèrement différent. Supposons que vous avait de la définition suivante pour une clé
Le code LINQ serait le suivant
vous devez inclure Système.Linq. Voir msdn.microsoft.com/en-us/library/bb341406.aspx
OriginalL'auteur JaredPar
Bien, j'ai trouvé cet extrait pour être le plus adapté à ma situation:
OriginalL'auteur Pavel Bastov
Si vous voulez une carte qui tient ses touches dans l'ordre naturel, je vous suggère de ne pas utiliser
Hashtable
pour commencer. Si vous êtes toujours à l'aide de 1.1, à l'aide deSystem.Les Collections.SortedList
. Si vous utilisez 2.0 ou supérieur, utilisezSortedList<TKey, TValue>
ouSortedDictionary<TKey, TValue>
. Les deux derniers sont largement la même dans les conditions de l'API, mais ils ont d'autres caractéristiques de performance - voir la documentation pour plus d'informations.No ils sont des types distincts. Vous pouvez créer un nouveau SortedDictionary à partir d'une table de hachage, avec un peu de soins. Mais si vous êtes en utilisant .NET 2.0 de toute façon, pourquoi êtes-vous à l'aide de la table de hachage en premier lieu? Vous devriez être en mesure de simplement remplacer la table de hachage avec SortedDictionary dans la plupart des cas, à moins que vous vraiment besoin de l'O(1) recherche.
OriginalL'auteur Jon Skeet
C'est pas vraiment ce que les tables de hachage sont conçus pour (ils sont faits pour avoir une distribution uniforme de clés). Utiliser une triés arbre?
OriginalL'auteur JH.
Il va probablement être un peu plus rapide à utiliser SortedList -
création & tri de la liste de tableaux est O(n) + O(nlog n) = O(nlog n), alors que la SortedList constructeur (selon les docs) est O(n), de sorte qu'il sera plus rapide d'utiliser SortedList directement plutôt que d'utiliser une liste de tableaux et explicitement tri
OriginalL'auteur thecoop