Est-il possible d'avoir plusieurs valeurs, pour une seule clé, dans la classe de dictionnaire Java?Classe de dictionnaire
Répondre
Bien sûr. Utilisez une liste comme valeur.
Vous devriez jeter un oeil à la classe MultiMap des communes apache collections
Vous pouvez utiliser une Map
régulière et ont les valeurs soient Collection
s:
Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();
map.put(0, Arrays.asList("foo", "bar"));
map.put(1, new ArrayList<String>());
map.get(1).add("blag");
Ou vous pouvez utiliser MultiMap
à partir du Apache Commons Collections .
Un
MultiMap
est unMap
avec une sémantique légèrement différente. Mettre une valeur dans la carte ajoutera la valeur àCollection
à cette clé. Obtenir une valeur retournera unCollection
, contenant toutes les valeurs mises à cette clé.Par exemple:
MultiMap mhm = new MultiHashMap(); mhm.put(key, "A"); mhm.put(key, "B"); mhm.put(key, "C"); Collection coll = (Collection) mhm.get(key);
coll
sera une collection contenant "A", "B", "C".
(Malheureusement, MultiMap
n'utilise pas génériques.)
vous ne pouvez pas utiliser le type "int" en tant que paramètre générique, car il s'agit d'un type primitif. Utilisez Integer à la place. – cd1
+1 pour les exemples de codes. – akarnokd
Google Collections serait beaucoup préférable à Apache Commons Collections. Il est implémenté avec des génériques et d'autres fonctionnalités de Java 5, et semble globalement être une meilleure extension pour le framework de collections Java. Voir http://www.javalobby.org/articles/google-collections/ (recherche pour "Apache Commons") – Jonik
D'abord, en ce qui concerne la classe dictionnaire: Cette classe est considérée comme obsolète, la documentation recommande l'utilisation de la carte à la place.
Ce type de collection que vous cherchez s'appelle un multimap. Vous pouvez en mettre un vous-même avec une liste, mais c'est fastidieux.
Vous pouvez utiliser un MultiMap à partir de Collections Apache ou de Google Collections. Bien que je sois personnellement un fan des collections Apache, ils ne supportent pas vraiment les génériques, donc un multimap Google peut être plus sûr.
Voir ma réponse ci-dessous concernant le dictionnaire - il est considéré comme une classe obsolète. – Uri
Qu'est-ce que la classe Java Dictionary? Voulez-vous dire Hashtable? –
Cela ressemble à une rediffusion de cette question: http://stackoverflow.com/questions/1049833/multi-valued-hashtable-in-java, posté quelque 12 heures plus tôt. Les deux ont été demandés par quelqu'un nommé Raji, mais en utilisant différents comptes non enregistrés. – Jonik