Obtenir les clés de HashMap en Java
J'ai une table de hachage en Java comme ceci:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
Puis-je remplir comme ceci:
team1.put("United", 5);
Comment puis-je obtenir les clés? Quelque chose comme: team1.getKey()
de retour "Royaume".
- Qu'attendez-vous
team1.getKey()
de retour si: (1) la carte est vide, ou (2) si elle contient plusieurs clés? int
doit être utilisé pour un seul comme cela.
Vous devez vous connecter pour publier un commentaire.
Un
HashMap
contient plus d'une touche. Vous pouvez utiliserkeySet()
pour obtenir l'ensemble de toutes les touches.va stocker
1
avec les principaux"foo"
et2
avec les principaux"bar"
. Pour effectuer une itération sur toutes les touches:imprime
"foo"
et"bar"
.List<String> keys = new ArrayList<>(mLoginMap.keySet());
C'est faisable, au moins en théorie, si vous connaissez l'index:
keySet()
retourne un ensemble, de sorte que vous pouvez convertir un tableau.Le problème, bien sûr, est que un ensemble ne promets pas de garder votre commande. Si vous avez seulement un élément dans la table de hachage, vous êtes bon, mais si vous avez plus de cela, il est préférable de faire une boucle sur la carte, comme d'autres réponses ont fait.
HashMap
. Bon spectacle.Vérifier cela.
https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
(Utiliser
java.util.Objects.equals
parce que la table de hachage peut contenirnull
)À l'aide de JDK8+
Plus "générique" et aussi sûr que possible
Ou si vous êtes sur JDK7.
Vous pouvez récupérer toutes les
Map
les clés à l'aide de la méthodekeySet()
. Maintenant, si ce que vous avez besoin est d'obtenir un clé compte tenu de son valeur, c'est une question entièrement différente etMap
ne sera pas vous aider là-bas; vous auriez besoin d'un spécialisés structure de données, commeBidiMap
(une carte qui permet de recherche bidirectionnelle entre les clés et les valeurs) à partir de Apache Commons Collections - aussi être conscient que plusieurs clés différentes peuvent être cartographiées à la même valeur.Si vous avez juste besoin quelque chose de simple et de plus d'une vérification.
Alors vous pouvez chercher n'importe quelle touche.
Que vous souhaitez obtenir de l'argument (
United
) dont la valeur est donnée (5
) vous pouvez également envisager l'utilisation bidirectionnelle de la carte (par exemple par la Goyave: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/BiMap.html).Une solution peut être, si vous connaissez l'emplacement de la clé, convertir les clés dans un tableau de chaînes et de renvoyer la valeur de la position:
Essayer ce programme simple:
Ce que je vais faire ce qui est très simple mais la mémoire des déchets est de mapper les valeurs avec une clé et de faire le contraire de mapper les touches avec une valeur de faire ceci:
private Map<Object, Object> team1 = new HashMap<Object, Object>();
il est important que vous utilisez
<Object, Object>
de sorte que vous pouvez mapperkeys:Value
etValue:Keys
comme ceteam1.put("United", 5);
team1.put(5, "United");
Donc, si vous utilisez
team1.get("United") = 5
etteam1.get(5) = "United"
Mais si vous utilisez une méthode spécifique sur l'un des objets dans les paires, je vais être meilleur si vous faites une autre carte:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
private Map<Integer, String> team1Keys = new HashMap<Integer, String>();
et puis
team1.put("United", 5);
team1Keys.put(5, "United");
et n'oubliez pas, restez simple 😉
Pour obtenir Clé et ses valeur
e.g
Sera d'impression: Clés: Royaume-Valeur:5
Clés: Barcelone Valeur:6