Beim Durchlaufen der hashmap zur Gruppe der Werte von gleichen Schlüssel in ein <key, list<Werte>> paar
Ich habe eine harte Zeit versucht zu denken, der einen Weg erstellen Sie eine HashMap, die Gruppen-Werte (in einer Liste), der den gleichen Schlüssel. Dies ist, was ich meine:
Sagen, ich habe die folgenden Schlüssel und Werte:
Value Key *Sorry I got the columns swapped
1 10
1 11
1 12
2 20
3 30
3 31
Möchte ich diese Werte in einen
Hashmap <Integer, List<Integer>>
So, dass es-Gruppe die Werte in die Liste ein Integer, der den gleichen Schlüssel, so etwas wie dieses:
(1, {10, 11, 12}),(2, {20}), (3, {30,31})
Gerade jetzt der Schlüssel und der Wert gespeichert sind, in einem
Hashmap <Integer, Integer>
Und ich bin verloren, wie eine Schleife durch diese Hashmap erstellen, die neue Hashmap mit der Taste: die Liste der Werte-paar. Hat jemand einen guten Ansatz zu diesem Thema?
Sind Sie sicher, dass diese Werte gespeichert werden, in einer
Wie die Tasten in einem
Karte hat eindeutige Schlüssel. Wie ist, dass Sie die Taste 1 wiederholt?
Hashmap nicht erlauben, mehrere Werte für einen Schlüssel - Sie können nicht die ursprüngliche Liste, die Sie geschrieben in einer HashMap<Integer, Integer>, Zeit.
Ich habe die aus.drucken Sie die Taste und der Wert sind, werden dort ausgedruckt, wie es sollte
Map
?Wie die Tasten in einem
HashMap
sind einzigartig, ich Wette, die meisten Ihrer Informationen verloren gehen. Eine einfache for (Map.Entry<Integer, Integer> e : yourMap) { out.println(e.getKey() + " " + e.getValue()); }
- Schleife prüfen Sie den Inhalt der aktuellen Karte.Karte hat eindeutige Schlüssel. Wie ist, dass Sie die Taste 1 wiederholt?
Hashmap nicht erlauben, mehrere Werte für einen Schlüssel - Sie können nicht die ursprüngliche Liste, die Sie geschrieben in einer HashMap<Integer, Integer>, Zeit.
Ich habe die aus.drucken Sie die Taste und der Wert sind, werden dort ausgedruckt, wie es sollte
InformationsquelleAutor user974047 | 2013-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angenommen, Sie erstellen eine
HashMap<Integer, List<Integer>>
, und Sie möchten, fügen Sie einen Schlüssel-Wert-paar, das es an der Art wie Sie fragte, Sie können die folgende Methode verwenden:Verwendung dieser Methode bei deinen Beispiel-Daten:
Karte.enthält (- Taste) oder Karte.containsKey(key)
InformationsquelleAutor Fortega
Statt einer einfachen
Map
Einsatz von Google Guava istMultimap
.Einen
Multimap
ist einDieses Konzept hat natürlich auch schon umgesetzt, in anderen Bibliotheken auch, Guave, ist nur meine persönliche Präferenz.
InformationsquelleAutor zagyi
HashMap speichern nur den Wert 1 für jede ganze Zahl. So iteriert es sollten nur die folgenden Werte:
Zur Iteration über den Inhalt einer Karte können Sie die entrySet() Methode:
Eine Karte zu erstellen der Liste, die ich empfehlen, dies zu tun:
InformationsquelleAutor Raphaël
Ihrer tatsächlichen situation nicht funktionieren kann, weil ein
HashMap<Integer,Integer>
ist nicht in der Lage, zum speichern von zwei Paare mit dem gleichen Schlüssel wie in1,10
und1,11
.Können Sie ganz einfach entwickeln Sie Ihre eigenen multimap aber das beste, was zu tun ist die Verwendung einer Klasse bereits entwickelt, Apache Commons Rahmen hat eine
MultiValueMap<K V>
Klasse bereits für Sie vorbereitet.InformationsquelleAutor Jack