Bonjour,
est ce possible de donner plusieurs valeurs à une clé dans une HashMap, merci beaucoup pour votre aide...
Bonjour,
est ce possible de donner plusieurs valeurs à une clé dans une HashMap, merci beaucoup pour votre aide...
Il faut que tu définisses une HashMap qui contient des List :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Map<TypeCle, List<TypeValeur>> map;
Par exemple je fais ca:
Merci d'avance...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 HashMap nomEtPasse = new HashMap<String, List<String>>(); nomEtPasse.put("nom/mot de passe", "toto/toto"); nomEtPasse.put("nom/mot de passe", "test/test");
Je comprends pas l'exemple.
Normalement, pour un titre pareil je conseillerais d'utiliser HashMultiMap<K, V> de la bibliothèque Guava.
Mais peut-être que les choses pourraient être plus simple.
Genre, si à chaque clé tu associes un login et un mot de passe, tu n'as pas besoin d'associer plusieurs valeurs à une clé. Il te suffit de créer une classe Credentials qui contient un login et un mot de passe, et d'associer un Credentials à chaque clé.
mais dans mon cas je veux mettre dans une seule clé plusieurs valeurs vous voyez ???
Ceci devrait faire l'affaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 HashMap nomEtPasse = new HashMap<String, List<String>>(); nomEtPasse.put("nom/mot de passe", new ArrayList<String>()); nomEtPasse.get("nom/mot de passe").add("toto/toto"); nomEtPasse.get("nom/mot de passe").add("test/test");
effectivement où est le problème?:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 HashMap<String, List<String>> HashMap<String,String[]> HashMap<String,Tuple> //Tuple est un objet à toi contenant ....ce que tu veux
celle la ne devrai pas fonctionner non ???, je comprends que vous ayez ajouté une liste mais pas le fait que vous fetes un add sur un String et la liste est-elle liée au nom/mot de passe ???? merci pour votre aide...
Code : Sélectionner tout - Visualiser dans une fenêtre à part nomEtPasse.get("nom/mot de passe").add("toto/toto");
Bah essaie au moins.
Dans ta Map tu as un couple clef(une chaine)/Valeur (une liste).
Donc quand je fais
Je récupère une référence sur la liste contenue dans la Map sous la clef "nom/mot de passe".
Code : Sélectionner tout - Visualiser dans une fenêtre à part nomEtPasse.get("nom/mot de passe")
Or une liste possède une méthode add, si je ne m'abuse, donc autant l'utiliser.
Toutefois j'ai fait une légère erreur dans le code donnée précédemment. En effet, lors de la déclaration de la HashMap, j'ai oublié une partie de la déclaration de génériques.
Le code qui fonctionne est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 HashMap<String, List<String>> nomEtPasse = new HashMap<String, List<String>>(); nomEtPasse.put("nom/mot de passe", new ArrayList<String>()); nomEtPasse.get("nom/mot de passe").add("toto/toto"); nomEtPasse.get("nom/mot de passe").add("test/test");
À noter qu'il vaut peut-être mieux mettre un Set qu'une List, mais ça dépend du besoin, of course.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager