Voici les valeurs contenues dans le HashMap
statusName {Active=33, Renewals Completed=3, Application=15}
Code Java pour obtenir la première clé (c.-à-d. Active)
Object myKey = statusName.keySet().toArray()[0];
Comment pouvons-nous collecter la première clé "Valeur" (c'est-à-dire 33), je veux stocker à la fois la "clé" et la "valeur" dans une variable distincte.
HashMap
entrées ne sont pas ordonnées et que le "premier" peut donc changer chaque fois que vous modifiez la carte?HashMap
? Si vous le modifiez du tout, vous pouvez obtenir les résultats dans un ordre complètement différent.Réponses:
Vous pouvez essayer ceci:
Gardez à l'esprit,
HashMap
ne garantit pas l'ordre d'insertion. Utilisez aLinkedHashMap
pour conserver la commande intacte.Par exemple:
Production:
la source
com.google.gson.internal.LinkedTreeMap cannot be cast to...
... ma classe que j'ai indiquée au lieu de laString
au bon endroit ... ne peut pas trouver de réponse en ligne..aideGson
pour convertir un objet de valeur en unString
et ensuite l'analyser en mon type de classe. C'est moche mais je n'ai vraiment pas pu trouver d'autre solution à quelque chose de si facile à faire dans d'autres langues (j'apprends Java maintenant)Pour obtenir la "première" valeur:
Pour obtenir la valeur de la "première" clé:
Remarque: le code ci-dessus a été testé et fonctionne.
Je dis "premier" car les entrées HashMap ne sont pas ordonnées.
Cependant, un LinkedHashMap itère ses entrées dans le même ordre où elles ont été insérées - vous pouvez l'utiliser pour votre implémentation de carte si l'ordre d'insertion est important.
la source
Java 8 façon de faire,
String firstKey = map.keySet().stream().findFirst().get();
la source
Vous pouvez également essayer ceci pour obtenir l'intégralité de la première entrée,
Ceci pour obtenir uniquement la clé de la première entrée,
Ceci pour obtenir uniquement la valeur de la première entrée,
De plus, au cas où vous savez ce que vous faites et que vous souhaitez obtenir le deuxième (même pour le troisième, etc.) élément d'une carte, vous devriez essayer ceci,
la source
En utilisant
youMap.get(keyYouHave)
, vous pouvez en obtenir la valeur.Oui, vous pouvez l'affecter à une variable.
Attendez ......... ce n'est pas fini.
Si vous (logique métier) dépendez de l'ordre des insertions et de la récupération, vous allez voir des résultats étranges. La carte n'est pas ordonnée, elle ne sera pas stockée dans une commande. Soyez conscient de ce fait. Utilisez une alternative pour conserver votre commande. Probablement un
LinkedHashMap
la source
Notez que vous devez noter que votre flux logique ne doit jamais reposer sur l'accès aux
HashMap
éléments dans un certain ordre, simplement parce que lesHashMap
s ne sont pas ordonnésCollection
et que ce n'est pas ce à quoi ils sont destinés. (Vous pouvez en savoir plus sur les collections odered et trieuses dans cet article ).De retour à l'article, vous avez déjà fait la moitié du travail en chargeant la première clé d'élément:
Appelez simplement
map.get(key)
pour obtenir la valeur respective:la source
N'oubliez pas que l'ordre d'insertion n'est pas respecté dans une carte en général. Essaye ça :
Je n'utilise ceci que lorsque j'en suis sûr
map.size() == 1
.la source
Améliorer la réponse de whoami. Puisque
findFirst()
renvoie anOptional
, il est recommandé de vérifier s'il existe une valeur.En outre, certains ont commenté que trouver la première clé de a
HashSet
n'est pas fiable. Mais parfois, nous avons desHashMap
paires; c'est-à-dire que dans chaque carte, nous avons une clé et une valeur. Dans de tels cas, trouver rapidement la première clé d'une telle paire est pratique.la source
C'est aussi une belle façon de faire ça :)
la source
Vous pouvez également essayer ci-dessous:
la source