obtenir la valeur de chaîne de HashMap en fonction du nom de la clé

J’ai un HashMap avec différentes clés et valeurs, comment puis-je obtenir une valeur?

J’ai une clé dans la carte appelée my_code , elle devrait contenir une chaîne, comment puis-je simplement l’obtenir sans avoir à parcourir la carte?

Jusqu’à présent, j’ai ..

  HashMap newMap = new HashMap(paramMap); Ssortingng s = newMap.get("my_code").toSsortingng(); 

Je m’attends à voir une Ssortingng , telle que “ABC” ou “DEF”, car c’est ce que j’y ai mis initialement, mais si je fais un System.out.println() j’obtiens quelque chose comme java.lang.ssortingng#F0454

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

Utilisez simplement la Map#get(key) ?

 Object value = map.get(myCode); 

Voici un tutoriel sur les cartes, que vous trouverez peut-être utile: http://java.sun.com/docs/books/tutorial/collections/interfaces/map.html .

Modifier: vous avez modifié votre question avec les éléments suivants:

Je m’attends à voir une chaîne, telle que “ABC” ou “DEF”, car c’est ce que j’y ai mis initialement, mais si je fais un System.out.println (), j’obtiens quelque chose comme java.lang.ssortingng # F0454

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

Vous voyez le résultat de Object#toSsortingng() . Mais java.lang.Ssortingng devrait déjà en avoir une implémentée, sauf si vous avez créé une implémentation personnalisée avec un minuscule s dans le nom: java.lang.ssortingng . S’il s’agit en fait d’un object personnalisé, vous devez remplacer Object#toSsortingng() pour obtenir une “chaîne lisible par l’homme” chaque fois que vous effectuez un System.out.println() ou un toSsortingng() sur l’object souhaité. Par exemple:

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

Si vous stockez des clés / valeurs en tant que chaînes, cela fonctionnera alors:

 HashMap newMap = new HashMap(); newMap.put("my_code", "shhh_secret"); Ssortingng value = newMap.get("my_code"); 

La question est ce qui se remplit dans le HashMap (clé et valeur)

Si vous utilisez des génériques et définissez votre carte comme

 Map map = new HashMap(); 

puis chercher la valeur comme

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

vous ne serez pas obligé de transtyper la méthode map.get () ou call toSsortingng pour obtenir la valeur Ssortingng

Votre question n’est pas du tout claire, j’ai peur. Une clé n’a pas de “nom”; En ce qui concerne la carte, il ne s’agit de rien – il ne s’agit que d’une clé et sera comparé à d’autres clés. Si vous avez beaucoup de types de clés, je vous suggère fortement de les placer dans des cartes différentes pour des raisons de santé mentale.

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

map.get(myCode)

Un point important à noter ici est que si votre clé est un object de classe définie par l’utilisateur dans Java, rendez-vous un point pour remplacer la méthode égale. Étant donné que la méthode HashMap.get (clé d’object) utilise la méthode égal pour faire correspondre la valeur de clé. Si vous ne remplacez pas la méthode equals, elle essaiera de trouver la valeur simplement en fonction de la référence de la clé et non de la valeur réelle de la clé, auquel cas elle renverra toujours une valeur nulle.

Supposons que vous ayez déclaré HashMap comme: –

 HashMap hs = new HashMap<>(); 

Ensuite, la clé dans la carte est du type Type de données de caractère et valeur de type.Now, pour obtenir la valeur correspondant à la clé indépendamment du type de clé, le type de valeur, la syntaxe est: –

  char temp = 'a'; if(hs.containsKey(temp)){ ` int val = hs.get(temp); //val is the value corresponding to key temp } 

Donc, en fonction de votre question, vous voulez obtenir une valeur de chaîne correspondant à une clé. Pour cela, déclarez simplement HashMap comme HashMap < "type de données de la clé", "type de données de valeur" hs = new HashMap <> (); Utiliser ceci rendra votre code plus propre et vous n’aurez pas non plus à convertir le résultat de hs.get (“my_code”) en ssortingng car par défaut, il retourne la valeur de ssortingng si au moment de la saisie, une valeur a été conservée.

Vous pouvez utiliser la méthode get (Object key) du HashMap. Sachez que dans de nombreux cas, votre classe de clés doit remplacer la méthode d’égal à égal pour être une classe utile pour une clé de carte.