Table de hachage Java insérer
Je suis nouveau sur le Java et je suis en train d'apprendre les tables de hachage. Je veux insérer des objets dans ma table de hachage et ensuite être capable d'imprimer tous les objets de la table de hachage à la fin. Je ne suis pas sûr que je suis en train de faire faire de ce droit, car j'ai lu que j'ai besoin de remplacer la méthode get() ou hashCode() la méthode mais je ne suis pas sûr pourquoi.
Je suis de passage dans la Chaîne des objets de leurs noms. Quand je lance le debugger après mes inserts, il montre la clé comme "null" et l'index de mes plaquettes sont à des endroits aléatoires dans la table de hachage. Ex. 1, 6, 10
C'est la façon dont j'ai été l'ajout d'. Quelqu'un peut-il me dire si cela est correct, et dois-je réellement besoin de modifier les choses?
Merci d'avance!
CODE
Hashtable<String,String> hashTable=new Hashtable<String,String>();
hashTable.put("Donald", "Trump");
hashTable.put("Mike", "Myers");
hashTable.put ("Jimmer", "Markus");
Merci Greg pour la réponse rapide. si j'ai utilisé un Étudiant de l'objet pour l'insérer au lieu de seulement un objet de type String, aurais-je remplacer les choses? Avez-vous l'esprit en me montrant comment j'ai pu mettre en œuvre une telle chose? Merci à vous et à tout le monde pour votre aide
OriginalL'auteur Alex G | 2012-12-08
Vous devez vous connecter pour publier un commentaire.
Que vous faites les choses correctement. Rappelez-vous, un
Hashtable
n'est pas un accès direct à la structure. Vous ne pouvez pas obtenir la troisième élément à partir d'unHashtable
", par exemple. Il n'y a pas vraiment de sens pour le terme "indice" quand vous parlez d'unHashtable
: indices chiffrés de postes signifient rien.Un
Hashtable
garantit qu'il en sera de paires clé-valeur pour vous, dans une manière qu'il sera très rapide de conclure une valeur basée sur une touche (par exemple: étant donnéDonald
, vous obtiendrezTrump
très rapidement). Bien sûr, certaines conditions doivent être remplies pour que cela fonctionne, à droite, mais pour une simple Chaîne de caractères Chaîne de exemple, qui fonctionne.Vous devez en savoir plus sur les tables de hachage en général, pour voir comment ils fonctionnent vraiment derrière les coulisses.
MODIFIER (conformément à la demande du commettant): vous demandez à propos de l'enregistrement
Student
des instances de votre table de hachage. Comme je l'ai mentionné ci-dessus, certaines conditions doivent être adressés pour une table de hachage pour fonctionner correctement. Ces conditions sont relatives à la clé partie, pas la valeur partie.Si votre
Student
instance est la valeur, et une simple Chaîne de caractères est le clé, alors il n'y a rien de spécial à faire pour vous, parce que la Chaîne primitive répond déjà à toutes les conditions requises pour une bonne table de hachage de la clé.Si votre
Student
instance est la clé, alors les conditions suivantes doivent être remplies:À l'intérieur de
Student
, vous devez remplacer lahashCode
méthode de telle manière que, après des invocations dehashCode
sera de retour exactement la même valeur. En d'autres termes, l'expressionx.hashCode() == x.hashCode()
doit toujours être vrai.À l'intérieur de
Student
, vous devez remplacer laequals
méthode de telle manière qu'il ne retourtrue
pour deux identiques instances deStudent
, et retourfalse
autrement.Ces conditions sont assez pour
Student
de fonctionner comme une table de hachage de la clé. Vous pouvez optimiser encore plus les choses par écrit, une meilleurehashCode
de mise en œuvre (lire à ce sujet... c'est assez long à taper ici), mais aussi longtemps que vous répondez à ladite deux, vous êtes bon pour aller.Exemple:
Oui, vous pouvez utiliser
@Override
. Il est effectivement recommandé que vous le faites. J'ai été seulement de simplifier ici.OriginalL'auteur Isaac
Essayez ce code:
OriginalL'auteur K_Anas