Quelle est la différence entre la liste de tableaux et de table de hachage en C#?
Je veux stocker une collection de données dans la liste de tableaux ou Hastable mais les données retrival doit être efficace et rapide. Je veux savoir la structure de données se cache entre ArrayList et Hastable (j'.e liste Liée,Double liste chaînée)
pourquoi ne pas utiliser une Liste<T> à la place?
OriginalL'auteur kalai | 2011-07-21
Vous devez vous connecter pour publier un commentaire.
Un
ArrayList
est un tableau dynamique qui grandit à mesure que de nouveaux éléments sont ajoutés qui vont au-delà de la capacité actuelle de la liste. Articles dans la liste de tableaux sont accessibles par un index, un peu comme un tableau.La
Hashtable
est une table de hachage en coulisses. Les données sous-jacentes de la structure est généralement un tableau, mais au lieu d'y accéder via un index, vous avez accès via un champ de clé qui correspond à un emplacement dans la table de hachage en appelant la clé de l'objetGetHashCode()
méthode.En général,
ArrayList
etHashtable
sont découragés .NET 2.0 et au-dessus en faveur deList<T>
etDictionary<TKey, TValue>
qui sont bien meilleures versions génériques qui fonctionnent mieux et ne pas avoir de boxe coûts pour les types de valeur.J'ai un post de blog qui compare les différents avantages de chaque générique de conteneurs d'ici, qui peuvent être utiles:
http://geekswithblogs.net/BlackRabbitCoder/archive/2011/06/16/c.net-fundamentals-choosing-the-right-collection-class.aspx
Alors qu'il parle du générique collecitons en particulier,
ArrayList
aurait complexité similaire frais pourList<T>
etHashtable
àDictionary<TKey, TValue>
OriginalL'auteur James Michael Hare
Une table de hachage de la carte des valeurs de chaîne de valeurs dans votre table de hachage. Une liste de tableaux met un tas d'éléments dans l'ordre numéroté.
OriginalL'auteur zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Comme son nom l'indique une liste de tableaux (ou une Liste) est mis en œuvre avec un Tableau... et en fait une table de hachage est également mis en œuvre avec la même structure de données. De sorte que les deux d'entre eux ont une constante des coûts d'accès (le meilleur de tous les possibles).
Ce que vous devez penser, c'est ce type de clé que vous avez besoin. Si vos données doivent être accessibles qu'avec une clé arbitraire (par exemple, une chaîne de caractères) vous ne serez pas en mesure d'utiliser une ArrayList. Également, une table de hachage doit être votre premier choix si les touches ne sont pas (plus ou moins) corrélatives.
Espère que cela aide.
OriginalL'auteur ciberado