131 votes

obtient une valeur de chaîne à partir de HashMap en fonction du nom de la clé

J'ai un HashMap avec plusieurs clés et valeurs, comment puis-je obtenir une valeur ?

J'ai une clé dans la carte qui s'appelle my_code Comment puis-je l'obtenir sans avoir à itérer à travers la carte ?

Jusqu'à présent, j'ai

   HashMap newMap = new HashMap(paramMap);
   String s = newMap.get("my_code").toString();

Je m'attends à voir un String comme "ABC" ou "DEF", car c'est ce que j'ai mis à l'origine, mais si je fais un System.out.println() J'obtiens quelque chose comme java.lang.string#F0454

Désolé, je ne suis pas très familier avec les cartes, comme vous pouvez probablement le deviner ;)

173voto

BalusC Points 498232

Il suffit d'utiliser Map#get(key) ?

Object value = map.get(myCode);

Voici un tutoriel sur les cartes, qui pourrait vous être utile : https://docs.oracle.com/javase/tutorial/collections/interfaces/map.html .

Editer : vous avez modifié votre question en ajoutant ce qui suit :

Je m'attends à voir une chaîne de caractères, comme "ABC" ou "DEF", car c'est ce que j'ai mis à l'origine, mais si je fais un System.out.println(), j'obtiens quelque chose comme java.lang.string#F0454

Désolé, je ne suis pas très familier avec les cartes, comme vous pouvez probablement le deviner ;)

Vous voyez le résultat de [Object#toString()](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()) . Mais le java.lang.String devrait déjà en avoir un, à moins que vous n'ayez créé un fichier sur mesure avec une lettre minuscule s dans le nom : java.lang.string . S'il s'agit en fait d'un objet personnalisé, vous devez alors surcharger la fonction Object#toString() pour obtenir une "chaîne lisible par l'homme" à chaque fois que vous effectuez un System.out.println() ou toString() sur l'objet souhaité. Par exemple :

@Override
public String toString() {
    return "This is Object X with a property value " + value;
}

58voto

jeff porter Points 1808

Si vous stockez les clés/valeurs sous forme de chaînes de caractères, cela fonctionnera :

HashMap<String, String> newMap = new HashMap<String, String>();
newMap.put("my_code", "shhh_secret");
String value = newMap.get("my_code");

La question est de savoir ce qui est ajouté à la table de hachage (clé et valeur).

11voto

Shree Points 176

Si vous utilisez des éléments génériques et que vous définissez votre carte en tant que

Map<String,String> map = new HashMap<String,String>();

puis récupération de la valeur en tant que

 String s = map.get("keyStr"); 

il n'est pas nécessaire d'utiliser le typecast de map.get() ou d'appeler la méthode toString pour obtenir une valeur de type chaîne de caractères.

9voto

Jon Skeet Points 692016

Je crains que votre question ne soit pas du tout claire. Une clé n'a pas de "nom" ; elle n'est pas "appelée" en ce qui concerne la carte - c'est juste une clé, et elle sera comparée à d'autres clés. Si vous avez beaucoup de types de clés différents, je vous suggère fortement de les placer dans des cartes différentes, par souci de cohérence.

Si cela ne vous aide pas, veuillez clarifier la question - de préférence avec du code pour montrer ce que vous voulez dire.

7voto

abyx Points 15304

map.get(myCode)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X