Java - obtenir l'index de clé dans la table de hachage?
En java si je suis en boucle sur le keySet()
d'un HashMap
, comment puis-je (à l'intérieur de la boucle), obtenir l'indice numérique de la touche?
Dans le fond, je boucle à travers la carte, je veux être en mesure d'obtenir 0,1,2...je me figure ce serait plus propre que de déclarer un int et en incrémentant à chaque itération.
Grâce.
- De quoi avez-vous besoin? Comme mentionné dans les réponses, de l'ordre dans une carte n'est pas nécessairement constant, il peut changer lorsque les clés sont ajoutés ou supprimés.
- Ce qui est encore mieux, c'est que deux HashMaps que sont l'égalité pouvez toujours avoir différents rangements. Ils peuvent le faire même si elles ont la même histoire de ajoute/supprime (différentes capacités de le faire).
- stackoverflow.com/questions/18188739/...
Vous devez vous connecter pour publier un commentaire.
Utilisation LinkedHashMap au lieu de HashMap
Il sera toujours remise des clés dans le même ordre (insertion) lors de l'appel de keySet()
Pour plus de détails, voir Classe LinkedHashMap
Ne sais pas si c'est tout "propre", mais:
int index = 0; for (Object key : map.keySet()) {
la valeur de l'Objet = map.get(clé); index++;} / / dang mise en formeLa table de hachage n'a pas défini la commande de clés.
Si tout ce que vous essayez de faire est d'obtenir la valeur de la table de hachage, vous pouvez faire quelque chose comme ce qui suit:
Ou, vous pouvez effectuer une itération sur les entrées d'une carte, si c'est ce qui vous intéresse:
En tant que communauté, nous pourrions être en mesure de vous donner une meilleure/plus de réponses appropriées si nous avions une idée pourquoi vous avez besoin d'indices ou de ce que vous avez pensé de l'index peut faire pour vous.
Vous ne pouvez pas - un ensemble est non ordonnée, donc il n'y a pas d'index fourni. Vous aurez à déclarer int, comme vous le dites. Rappelez-vous juste que la prochaine fois que vous appelez keySet() vous n'aurez pas nécessairement à obtenir les résultats dans le même ordre.
Il suffit de mettre, à base de hachage collections ne sont pas indexés, donc vous devez le faire manuellement.
Je viens d'apprendre les concepts de base de la table de hachage et il était clair qu'il n'était pas certain de la commande de clés.
Pour itérer vous pouvez utiliser:
L'affichage de ce que également une alternative viable à l' @Binil Thomas réponse essayé de l'ajouter comme commentaire, mais n'était pas convaincu de la lisibilité de l'ensemble.
Probablement n'aide pas à la question d'origine de l'affiche puisque c'est la traduction littérale de la situation qu'ils ont essayé de l'éviter, mais peut aider d'autres personnes à la recherche d'une réponse facile.