Ist es möglich, mehrere Werte für einen einzigen Schlüssel in der Java-Wörterbuchklasse zu haben?
Sie können den Typ "int" nicht als generischen Parameter verwenden, da er ein primitiver Typ ist. Verwenden Sie stattdessen Integer.
Ist es möglich, mehrere Werte für einen einzigen Schlüssel in der Java-Wörterbuchklasse zu haben?
Zunächst zur Klasse der Wörterbücher: Diese Klasse wird als veraltet betrachtet, die Dokumentation empfiehlt stattdessen die Verwendung von Map.
Diese Art von Sammlung, die Sie suchen, wird als Multimap bezeichnet. Sie könnten eine solche selbst mit einer Liste implementieren, aber das ist mühsam.
Sie können eine MultiMap entweder aus Apache Collections oder aus Google Collections verwenden. Während ich persönlich ein Fan der Apache Collections bin, unterstützen sie nicht wirklich Generika, so dass eine Google Multimap sicherer sein kann.
Sie können eine normale Map
und die Werte sollen sein 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");
Oder Sie können verwenden MultiMap
von der Apache Commons Sammlungen .
A
MultiMap
ist eineMap
mit leicht abweichender Semantik. Das Einfügen eines Wertes in die Map fügt den Wert zu einerCollection
auf dieser Taste. Wenn Sie einen Wert erhalten, wird einCollection
und enthält alle Werte, die diesem Schlüssel zugeordnet sind.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, die "A", "B" und "C" enthält.
(Leider, MultiMap
verwendet keine Generika).
Sie können den Typ "int" nicht als generischen Parameter verwenden, da er ein primitiver Typ ist. Verwenden Sie stattdessen Integer.
Google Collections wäre Apache Commons Collections deutlich vorzuziehen. Es ist mit Generika und anderen Java 5-Funktionen implementiert und scheint insgesamt eine bessere Erweiterung für das Java Collections Framework zu sein. Siehe javalobby.org/articles/google-collections (Suche nach "Apache Commons")
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Siehe meine Antwort weiter unten bezüglich Dictionary - es wird als veraltete Klasse betrachtet.
0 Stimmen
Welche Java Dictionary-Klasse? Meinen Sie Hashtable?
0 Stimmen
Das sieht aus wie eine Wiederholung dieser Frage: stackoverflow.com/questions/1049833/ die etwa 12 Stunden zuvor veröffentlicht wurde. Beide Anfragen wurden von einer Person namens Raji gestellt, allerdings unter Verwendung verschiedener nicht registrierter Konten.
0 Stimmen
@oxbow, java.sun.com/javase/6/docs/api/java/util/Dictionary.html . Ich wusste das auch nicht, aber Dictionary ist eine abstrakte Oberklasse von Hashtable - und die ist veraltet, wie Uri sagte. Diese Frage ist ganz klar ein Duplikat.