récupère la valeur de chaîne de HashMap en fonction du nom de la clé

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

J'ai une clé dans la carte appelé my_code, il doit contenir une chaîne de caractères, comment puis-je obtenir sans avoir à parcourir la carte?

Jusqu'à présent, je l'ai..

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

Je m'attends à voir un String, tel que "ABC" ou "DEF" car c'est ce que je mets là au départ, mais si je fais un System.out.println() j'obtiens quelque chose comme java.lang.string#F0454

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

99
demandé sur Augustus 2009-11-24 15:11:42

8 réponses

Suffit d'utiliser Map#get(key) ?

Object value = map.get(myCode);

Voici un tutoriel sur les cartes, vous pouvez le trouver utile: http://java.sun.com/docs/books/tutorial/collections/interfaces/map.html .

Edit: 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 je mets là initialement, mais si je fais un système.hors.println () je reçois quelque chose comme java.lang.chaîne # F0454

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

Vous voyez le résultat de Object#toString(). Mais le java.lang.String devrait déjà en avoir un implémenté, sauf si vous avez créé une implémentation personnalisée avec un s en minuscules dans le nom: java.lang.string. S'il s'agit en fait d'un objet personnalisé, vous devez remplacer Object#toString() pour obtenir une "chaîne lisible par l'homme" chaque fois que vous faites un System.out.println() ou toString() sur l'objet désiré. Par exemple:

@Override
public String toString() {
    return "This is Object X with a property value " + value;
}
137
répondu BalusC 2009-11-24 14:11:47

Si vous stockez des clés/valeurs en tant que chaînes, 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 ce qui est rempli dans le HashMap (clé et valeur)

51
répondu jeff porter 2017-12-26 20:55:23

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

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

Puis récupérer la valeur comme

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

Vous ne serez pas obligé de typecast la carte.get () ou appelez la méthode toString pour obtenir la valeur de chaîne

10
répondu Shirishkumar Bari 2014-04-11 05:18:43

Votre question n'est pas du tout claire, j'en ai peur. Une clé n'a pas de "nom" ;ce n'est pas" appelé " quoi que ce soit en ce qui concerne la carte - c'est juste une clé, et sera comparée à d'autres clés. Si vous avez beaucoup de différents types de clés, je vous suggère fortement de les mettre dans différentes cartes pour des raisons de santé mentale.

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

9
répondu Jon Skeet 2009-11-24 12:14:25

map.get(myCode)

6
répondu abyx 2009-11-24 12:14:32

Un point important à noter ici est que si votre clé est un objet d'une classe définie par l'utilisateur en java, alors, faire un point pour remplacer la méthode equals. Parce que le HashMap.la méthode get (Object key) utilise la méthode equals pour faire correspondre la valeur de la 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 retournera toujours une valeur null.

6
répondu Sreeja Mohan 2015-01-21 06:47:42

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

HashMap<Character,Integer> hs = new HashMap<>();

Ensuite, la clé dans la carte est de type Type de données de caractère et la valeur de type int.Maintenant, pour obtenir la valeur correspondant à la clé quel que soit le 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, selon votre question, vous voulez obtenir une valeur de chaîne correspondant à une clé.Pour cela, il suffit de déclarer HashMap comme HashMap(); L'utilisation de cela rendra votre code plus propre et vous n'aurez pas à convertir le résultat de hs.get ("my_code") à string comme par défaut, il renvoie la valeur de string si, au moment de l'entrée, on a conservé la valeur en tant que chaîne.

2
répondu Gaurav Sachdeva 2018-01-02 07:39:17

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

0
répondu raffael 2009-11-24 12:17:40