J'ai un Hashmap en Java comme celui-ci:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
Ensuite, je le remplis comme ceci:
team1.put("United", 5);
Comment puis-je obtenir les clés? Quelque chose comme: team1.getKey()
pour retourner "United".
team1.getKey()
retourner si: (1) la carte est vide, ou (2) si elle contient plusieurs clés?int
devrait être utilisé pour les simples comme celui-ci.Réponses:
A
HashMap
contient plus d'une clé. Vous pouvez utiliserkeySet()
pour obtenir l'ensemble de toutes les clés.stockera
1
avec clé"foo"
et2
avec clé"bar"
. Pour parcourir toutes les clés:imprimera
"foo"
et"bar"
.la source
List<String> keys = new ArrayList<>(mLoginMap.keySet());
C'est faisable, du moins en théorie, si vous connaissez l'indice:
keySet()
renvoie un ensemble, vous convertissez donc l'ensemble en tableau.Le problème, bien sûr, c'est qu'un ensemble ne promet pas de garder votre commande. Si vous n'avez qu'un seul élément dans votre HashMap, vous êtes bon, mais si vous en avez plus que cela, il est préférable de faire une boucle sur la carte, comme l'ont fait d'autres réponses.
la source
HashMap
. Bon spectacle.Vérifie ça.
https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
(À utiliser
java.util.Objects.equals
car HashMap peut contenirnull
)Utilisation de JDK8 +
Plus «générique» et aussi sûr que possible
Ou si vous êtes sur JDK7.
la source
HashMap
les clés sont uniques.Vous pouvez récupérer toutes les
Map
clés de en utilisant la méthodekeySet()
. Maintenant, si ce dont vous avez besoin est d'obtenir une clé compte tenu de sa valeur , c'est une question entièrement différente etMap
ne vous aidera pas là-bas; vous auriez besoin d'une structure de données spécialisée, commeBidiMap
(une carte qui permet une recherche bidirectionnelle entre la clé et les valeurs) des collections communes d'Apache - sachez également que plusieurs clés différentes peuvent être mappées à la même valeur.la source
Comme vous souhaitez obtenir l'argument (
United
) pour lequel la valeur est donnée (5
), vous pouvez également envisager d'utiliser une carte bidirectionnelle (par exemple fournie par Guava: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google /common/collect/BiMap.html ).la source
Si vous avez juste besoin de quelque chose de simple et plus d'une vérification.
Ensuite, vous pouvez rechercher n'importe quelle clé.
la source
la source
next()
deux fois dans la boucle signifie que vous imprimerez les touches impaires avec les valeurs paires.Utilisez le fonctionnement fonctionnel pour une itération plus rapide.
team1.keySet().forEach((key) -> { System.out.println(key); });
la source
Une solution peut être, si vous connaissez la position de la clé, de convertir les clés en un tableau de chaînes et de renvoyer la valeur à la position:
la source
Essayez ce programme simple:
la source
la source
Pour obtenir des clés dans HashMap, nous avons la méthode keySet () qui est présente dans le
java.util.Hashmap
package. ex:Maintenant, les clés auront toutes vos clés disponibles sur la carte. ex: [clé1, clé2]
la source
java,util.HashMap
est une classe, pas un paquet, et il n'y a rien ici qui ne soit pas là il y a cinq ans.Ce que je vais faire, qui est très simple, mais qui gaspille de la mémoire, c'est de mapper les valeurs avec une clé et de faire l'inverse pour mapper les clés avec une valeur faisant ceci:
private Map<Object, Object> team1 = new HashMap<Object, Object>();
il est important que vous utilisiez
<Object, Object>
pour pouvoir mapperkeys:Value
etValue:Keys
aimer çateam1.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 des paires, je serai mieux si vous créez une autre carte:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
private Map<Integer, String> team1Keys = new HashMap<Integer, String>();
puis
team1.put("United", 5);
team1Keys.put(5, "United");
et rappelez-vous, restez simple;)
la source
Pour obtenir la clé et sa valeur
par exemple
Imprimera: Clé: United Valeur: 5 Clé: Barcelone Valeur: 6
la source