3 Stimmen

Wörterbuch-Klasse

Ist es möglich, mehrere Werte für einen einzigen Schlüssel in der Java-Wörterbuchklasse zu haben?

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.

3voto

Uri Punkte 86472

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.

2voto

Esteban Araya Punkte 28454

Sicher. Verwenden Sie eine Liste als Wert.

2voto

JaredPar Punkte 699699

Sie sollten einen Blick auf die MultiMap-Klasse aus den Apache Commons Collections werfen

2voto

John Kugelman Punkte 327535

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 eine Map mit leicht abweichender Semantik. Das Einfügen eines Wertes in die Map fügt den Wert zu einer Collection auf dieser Taste. Wenn Sie einen Wert erhalten, wird ein Collection 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).

0 Stimmen

Sie können den Typ "int" nicht als generischen Parameter verwenden, da er ein primitiver Typ ist. Verwenden Sie stattdessen Integer.

1 Stimmen

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")

0 Stimmen

Richtig, wenn es keine Einschränkung wie eine Java 1.4 kompatible Lösung gibt IMHO.

CodeJaeger.com

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.

Powered by:

X