82 votes

HashMap : une clé, plusieurs valeurs

Comment puis-je obtenir la troisième valeur pour la première clé de cette carte ? Est-ce possible?

105voto

solendil Points 5098

Des bibliothèques existent pour faire cela, mais la manière Java la plus simple consiste à créer un Map de List comme ceci :

 Map<Object,ArrayList<Object>> multiMap = new HashMap<>();

26voto

jfabrizio Points 379

Par exemple:

 Map<Object,Pair<Integer,String>> multiMap = new HashMap<Object,Pair<Integer,String>>();

Pair est une classe paramétrique

 public class Pair<A, B> {
    A first = null;
    B second = null;

    Pair(A first, B second) {
        this.first = first;
        this.second = second;
    }

    public A getFirst() {
        return first;
    }

    public void setFirst(A first) {
        this.first = first;
    }

    public B getSecond() {
        return second;
    }

    public void setSecond(B second) {
        this.second = second;
    }

}

13voto

Neo Points 706

C'est ce que j'ai trouvé dans la réponse à une question similaire

 Map<String, List<String>> hm = new HashMap<String, List<String>>();
List<String> values = new ArrayList<String>();
values.add("Value 1");
values.add("Value 2");
hm.put("Key1", values);

// to get the arraylist
System.out.println(hm.get("key1"));

RÉSULTAT : [Valeur 1, Valeur 2]

12voto

Andrew Stubbs Points 2013

Un HashMap Java standard ne peut pas stocker plusieurs valeurs par clé, toute nouvelle entrée que vous ajoutez écrasera la précédente.

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