La table de hachage est également connue sous le nom de liste de distribution, qui est une structure de classe de collection utilisée pour stocker des objets de groupe.
Qu'est-ce qu'une table de hachage
Les tableaux et les vecteurs peuvent stocker des objets, mais la position de stockage de l'objet est aléatoire, c'est-à-dire qu'il n'y a pas de connexion nécessaire entre l'objet lui-même et sa position de stockage. Lorsque vous souhaitez trouver un objet, vous ne pouvez comparer que chaque élément dans un certain ordre (comme la recherche séquentielle ou la recherche à deux points). être considérablement réduit.
Une méthode de stockage efficace est qu'elle ne se compare pas avec d'autres éléments, et l'enregistrement qui peut être obtenu à un moment peut être obtenu. Cela nécessite d'établir une relation correspondante spécifique entre la position de stockage de l'objet et l'attribut clé de l'objet (défini sur k) pour correspondre à chaque objet correspondant à une position de stockage unique. Lors de la recherche, calculez simplement la valeur de f (k) en fonction des attributs clés de l'objet à vérifier. Si cet objet est dans la collection, il doit être sur la position de stockage F (k), il n'est donc pas nécessaire de se comparer avec d'autres éléments de l'ensemble. Appelé cette relation correspondante F en tant que méthode de hachage, et le tableau établi conformément à cette idée est une table de hachage.
Java utilise la catégorie de hachage pour réaliser le tableau de hachage.
• Capacité: la capacité de hachable n'est pas fixe et la capacité de l'objet peut également augmenter automatiquement.
• Clé (clé): chaque objet de stockage nécessite un mot-clé. Tous les mots clés d'un hashtable sont uniques.
• Code de hachage: si vous souhaitez stocker l'objet à Hashtable, vous devez cartographier la clé de mot-clé à une donnée entière pour devenir le code de hachage de la clé.
• Élément: chacun de hashtable a deux domaines, qui sont la clé de domaine de mots clés et la valeur du domaine de valeur (objet de stockage). La clé et la valeur peuvent être un objet de type objet, mais il ne peut pas être vide.
• Facteur de charge: le facteur de remplissage est représenté par la plénitude de la table de hachage, et sa valeur est égale à la longueur du nombre d'éléments que la table de hachage ci-dessus.
Utilisation de la table de hachage
Il existe trois principales formes de méthodes de construction pour les tables de hachage:
HashTable ();
Hashtable (capacité int);
Hashtable (Capacité int, Float LoadFactor)
Les principales méthodes de tables de hachage sont présentées dans le tableau 8-6.
Tableau 8-6 Méthodes fréquemment définies par la définition du tableau de hachage
méthode | Fonction |
---|---|
void clear () | Re -set et effacez la table de hachage |
Booléen contient (valeur de l'objet) | Déterminez si le tableau de hachage contient un objet donné, s'il y a un retour vrai, sinon le faux sera retourné |
Booléen contienty (clé d'objet) | Déterminez si le tableau de hachage contient un mot-clé donné, s'il y a un retour à vrai, sinon le faux sera retourné |
booléen iSempty () | Confirmez si la table de hachage est vide, si vous revenez à True, sinon le faux sera retourné |
Objet get (clé objet) | Objet pour obtenir les mots clés correspondants, s'il n'y a pas de retour null |
void rehash () | Peu importe Howh, la table de hachage d'extension peut économiser plus d'éléments. |
Put objet (clé d'objet, valeur de l'objet) | Enregistrez l'objet à la table de hachage avec un mot-clé donné. |
Object Suppor (clé d'objet) | Supprimez l'objet correspondant à la phase du mot-clé de la table de hachage, si l'objet ne revient pas à NULL |
int size () | Retour à la taille de la table de hachage |
String toString () | Convertir le contenu de la table de hachage en une chaîne |
La création de la table de hachage peut également être mise en œuvre via le nouvel opérateur. Sa déclaration est:
Havetable a = new hashTable ();
exemple:
[Exemple 8-12] Traversage des tables de hachage.
// ************ ep8_12.java ******************************* **************************************************** *****************. Has.put ("One", nouveau entier (1)); ", new double (12.3)); set s = has.KeySet (); for (iterator <string> i = s.iterator (); i.hasnext ();) {System.out.println (Has.get ( I.next ()));}}}
Résultats de l'exécution:
21312.3