Ist es möglich, mehrere Werte für einen einzelnen Schlüssel in der Java-Dictionary-Klasse zu haben?Dictionary-Klasse
Antwort
Sicher. Verwenden Sie eine Liste als Wert.
Sie sollten einen Blick auf die MultiMap Klasse aus den Sammlungen commons Apache nehmen
Sie eine regelmäßige Map
verwenden können und die Werte Collection
s sein:
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");
Oder Sie können MultiMap
von der Apache Commons Collections verwenden .
Ein
MultiMap
ist einMap
mit etwas unterschiedlicher Semantik. Wenn Sie einen Wert in die Karte einfügen, wird der Wert zu diesemCollection
hinzugefügt. Wenn Sie einen Wert erhalten, erhalten Sie eineCollection
, die alle an diesen Schlüssel angelegten Werte enthält.Zum Beispiel:
MultiMap mhm = new MultiHashMap(); mhm.put(key, "A"); mhm.put(key, "B"); mhm.put(key, "C"); Collection coll = (Collection) mhm.get(key);
coll
wird eine Sammlung sein, mit "A", "B", "C".
(Leider MultiMap
keine Generika verwenden.)
Sie können den Typ "int" nicht als generischen Parameter verwenden, da es sich um einen primitiven Typ handelt. Verwenden Sie stattdessen Ganzzahl. – cd1
+1 für die Beispielcodes. – akarnokd
Google Sammlungen wäre Apache Commons Collections vorzuziehen. Es ist mit Generika und anderen Java 5-Funktionen implementiert und insgesamt scheint es eine bessere Erweiterung für Java Collections Framework zu sein. Siehe http://www.javalobby.org/articles/google-collections/ (Suche nach "Apache Commons") – Jonik
Zuerst Wörterbuch Klasse in Bezug auf: Diese Klasse wird obselete betrachtet, empfiehlt die Dokumentation Karte stattdessen verwenden.
Diese Art von Sammlung, die Sie suchen, wird als Multimap bezeichnet. Sie könnten eine selbst mit einer Liste implementieren, aber das ist mühsam.
Sie können eine MultiMap entweder aus Apache Collections oder aus den Google Collections verwenden. Während ich persönlich ein Fan der Apache-Sammlungen bin, unterstützen sie nicht wirklich Generika, also könnte ein Google-Multimap eher sicherer sein.
Siehe meine Antwort unten in Bezug auf Wörterbuch - es gilt als eine veraltete Klasse. – Uri
Welcher Java Dictionary Klasse? Meinst du Hashtable? –
Das sieht wie eine Wiederholung dieser Frage aus: http://stackoverflow.com/questions/1049833/multi-evalued-hashtable-in-java, etwa 12 Stunden zuvor gepostet. Beide wurden von jemandem namens Raji gefragt, aber mit verschiedenen nicht registrierten Accounts. – Jonik