Map<String, HashSet<String>> Umwandeln in Map<String, ArrayList<String>>

Status
Nicht offen für weitere Antworten.

noetig

Mitglied
Ich habe eine eine Map im Type String und HashSet (damit ich bei den Übersetzungen keine Duplikate erhalte.)

Das sieht dann so aus...
{fun={spaß},{freude}}


Jetzt möchte ich aber gerne dieses Map
Java:
Map<String, HashSet<String>>
umwandeln in ein
Java:
Map<String, ArrayList<String>>
da ich dies als Rückgabewert haben muss.

Versuche wie Map<String, ArrayList<String>> neueMap = alteMap; schlagen fehl.

Ich würde auserdem wissen wie ich direkt nur auf das HashSet zugreifen kann ohne die ganze Map zu verwenden.

Hat jemand den rettenden Tipp?
 

Landei

Top Contributor
Am Umkopieren kommst du nicht vorbei:
(aus'm Kopp und ungetestet)
Java:
Map<String, HashSet<String>> hsMap = ...
Map<String, ArrayList<String>> alMap = new HashMap<String, ArrayList<String>>(); 
for(Map.Entry<String, HashSet<String>> entry : hsMap.entrySet()) {
 alMap.put(entry.getKey(), new ArrayList<String>(entry.getValue()));
}
return alMap;
 
S

Spacerat

Gast
Hier arbeitet man doch mit Collections... Warum dieses "for"-Konstrukt?
Java:
Map<String, Set<String>> from = ...
Map<String, List<String>> to = new HashMap<String, List<String>>();
Iterator<Map.Entry<String, Set<String>> i = from.entrySet.iterator();
Map.Entry<String, Set<String> entry;
while(i.hasNext()) {
  entry = i.next();
  to.put(entry.getKey(), new ArrayList<String>>(entry.getValue()));
}
 
S

SlaterB

Gast
wie war das nicht letztens in der Umfrage, keySet oder entrySet?
ich finde das mit den Keys schöner, Performance ist doch nebensächlich
Java:
Map<String, HashSet<String>> hsMap = ...
Map<String, ArrayList<String>> alMap = new HashMap<String, ArrayList<String>>(); 
for(String key : hsMap.keySet()) {
 alMap.put(key, new ArrayList<String>(hsMap.get(key)));
}
return alMap;
 
S

Spacerat

Gast
:oops: Öhm... Ok... Ich nahm an, dass dieses "for" nur mit Arrays funktioniert und nicht mit Collections.
 
S

Spacerat

Gast
All Right... Hab's inzwischen nach gelesen. Ganz beiläufig auch noch erfahren, dass Arrays in diesem For-Each-Konstrukt vermieden werden sollten. Der Grund: Arrays werden in eine List geboxt, was (zusätzlich zu anderen nachteiligen Nebeneffekten) recht unperformant ist. Also: nicht für Unklug...:)
 

noetig

Mitglied
also ich sehe...viele Wege führen nach Rom, für mich zählt jetzt mal, Hauptsache es läuft ;) Ich schau mir aber die anderen Lösungen noch mal an.

Ich hab da aber immer noch ein anderes Problem, wie kann ich denn nur auf einen Teil (unten rot) des Maps hsMap zugreifen?

Map<String, HashSet<String>> hsMap = ...
 
B

bygones

Gast
du brauchst den key dafür - also den string unter dem du ds gespeichert hast ueber get(String key)
 

Landei

Top Contributor
Hier arbeitet man doch mit Collections... Warum dieses "for"-Konstrukt?
Java:
Map<String, Set<String>> from = ...
Map<String, List<String>> to = new HashMap<String, List<String>>();
Iterator<Map.Entry<String, Set<String>> i = from.entrySet.iterator();
Map.Entry<String, Set<String> entry;
while(i.hasNext()) {
  entry = i.next();
  to.put(entry.getKey(), new ArrayList<String>>(entry.getValue()));
}

Das Hauptproblem, was ich mit diesem Stil habe, ist nicht die Zeile mehr: Der Iterator ist außerhalb der Schleife sichtbar, und das ist schlecht. Ich habe viel mit älterem Code zu tun, der genau so geschreiben ist (außer dass die Iteratoren nicht generisch sind, was das Problem noch vergrößert), und ich habe in einigen Fällen Bugs gefunden, die auf der versehentlichen "Wiederverwendung" des Iterators in der nächsten Schleife beruhten. Da braucht man ein Mikroskop und viel Geduld, um endlich irgendwann darauf zu kommen, dass ein iter2 eigentlich ein iter3 sein sollte oder so...

Es gibt auch noch die Variante, wo der Iterator in einer for-Schleife erzeugt und "getaktet" wird - das ist schon ein wenig besser.
 
S

Spacerat

Gast
Das Hauptproblem, was ich mit diesem Stil habe, ist nicht die Zeile mehr: Der Iterator ist außerhalb der Schleife sichtbar, und das ist schlecht. Ich habe viel mit älterem Code zu tun, der genau so geschreiben ist (außer dass die Iteratoren nicht generisch sind, was das Problem noch vergrößert), und ich habe in einigen Fällen Bugs gefunden, die auf der versehentlichen "Wiederverwendung" des Iterators in der nächsten Schleife beruhten. Da braucht man ein Mikroskop und viel Geduld, um endlich irgendwann darauf zu kommen, dass ein iter2 eigentlich ein iter3 sein sollte oder so...

Es gibt auch noch die Variante, wo der Iterator in einer for-Schleife erzeugt und "getaktet" wird - das ist schon ein wenig besser.
Waaaahhhhh... Jajaja... zerfleischt mich ruhig... Dann eben kein Iterator... und jede Menge Tipparbeit für mich. OMG.
 
M

maki

Gast
Hat nix mit zerfleischen zu tun Spacerat ;)

Leider werden schleifen oft per C&P "wiederverwendet", je mehr Abhängigkeiten zum Kontext der Schleife existieren, umso mehr Möglichkeiten gibt es Fehler einzuschleusen.
Eine for Schleife hat den Vorteil, das oft (nicht immer) alle Abhängigkeiten der Schleife selbst im Schleifenkopf deklariert und initialisiert sind.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
B Map<String, FilterMeta, wie Wert bekommen? Java Basics - Anfänger-Themen 4
Todesbote Map<String, Treeset> aus Treeset bestimmten Wert auslesen Java Basics - Anfänger-Themen 4
T Map<String, Vector>? Java Basics - Anfänger-Themen 11
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
R int in Ascci umwandeln Java Basics - Anfänger-Themen 7
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
S JAR zu EXE umwandeln Java Basics - Anfänger-Themen 22
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
E PDF Datei im xfdf-Datei umwandeln und auf dem Laufwerk ablegen Java Basics - Anfänger-Themen 0
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
C Rekursive Methode in Interative Methode umwandeln Java Basics - Anfänger-Themen 17
J Dezimalzahl in Bruch Umwandeln und Kürzen Java Basics - Anfänger-Themen 8
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
S String umwandeln Java Basics - Anfänger-Themen 6
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
K String in Integer umwandeln Java Basics - Anfänger-Themen 4
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
O von Basis 10 in Basis x umwandeln Java Basics - Anfänger-Themen 5
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
L String in Integer umwandeln Java Basics - Anfänger-Themen 3
I JSON Datei in Array umwandeln Java Basics - Anfänger-Themen 1
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
S \n nicht in Zeilenumbruch umwandeln Java Basics - Anfänger-Themen 5
W Dezimalzahlen in Binärzahl umwandeln. Wie möglich ? Java Basics - Anfänger-Themen 9
Vince42 NIO File Tree in XML umwandeln Java Basics - Anfänger-Themen 10
R Kompletten String umwandeln in Integer Java Basics - Anfänger-Themen 10
P 32 Bit Binärzahl Umwandeln in Dezimal Java Basics - Anfänger-Themen 8
H 32-Bit Zahl (Integer) in eine IPv4 Adresse umwandeln? Java Basics - Anfänger-Themen 2
Orkanson Datentypen Integer in String umwandeln/hinzufügen Java Basics - Anfänger-Themen 3
geekex Double zu String umwandeln in einer Methode Java Basics - Anfänger-Themen 28
MiMa String in Gross und Kleinbuchstaben umwandeln Java Basics - Anfänger-Themen 10
H JCalendar in String umwandeln Java Basics - Anfänger-Themen 9
P Wie kann ich mein Programm zu einer App umwandeln? Java Basics - Anfänger-Themen 4
M Beliebigen Text in *** umwandeln Java Basics - Anfänger-Themen 15
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
L String in Binär umwandeln Java Basics - Anfänger-Themen 4
G .java in .jar umwandeln Eclipse Java Basics - Anfänger-Themen 12
W String auf char[] umwandeln Java Basics - Anfänger-Themen 3
K Double Wert runden und in Int umwandeln Java Basics - Anfänger-Themen 7
K For Schleife in While Schleife umwandeln Java Basics - Anfänger-Themen 5
C Array in String umwandeln Java Basics - Anfänger-Themen 5
K Methoden Zahlensysteme umwandeln mittels Rekursion Java Basics - Anfänger-Themen 5
W Wie kann man diesen Code in einen Code umwandeln, der folgendes können sollte? Java Basics - Anfänger-Themen 1
I String zu File umwandeln Java Basics - Anfänger-Themen 2
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
G Bilddaten in Matrix umwandeln Java Basics - Anfänger-Themen 1
L Java CMD Console in String umwandeln? Java Basics - Anfänger-Themen 2
D String zu int umwandeln Java Basics - Anfänger-Themen 2
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
K Wie .java in .jar umwandeln? Java Basics - Anfänger-Themen 5
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
W String Array in Int umwandeln um auf Zahl zu überprüfen Java Basics - Anfänger-Themen 4
G double in float umwandeln Java Basics - Anfänger-Themen 2
M csv in xlsx umwandeln Java Basics - Anfänger-Themen 7
F Char in Long umwandeln? Java Basics - Anfänger-Themen 2
D String in FileInputStream umwandeln Java Basics - Anfänger-Themen 2
J Mit Eclipse PLZ in Koordinaten umwandeln und ausgeben Java Basics - Anfänger-Themen 3
A Erste Schritte Buchstaben in zahlen umwandeln Java Basics - Anfänger-Themen 4
T opengl Dreick in einen Würfel umwandeln Java Basics - Anfänger-Themen 0
S Groß bzw. Klein Buchstaben umwandeln (gemischt) Java Basics - Anfänger-Themen 1
D Methode mit mehren Rekursiven aufrufen in Methode mit einem Rekursiven Aufruf umwandeln! Java Basics - Anfänger-Themen 1
V String in Byte umwandeln Java Basics - Anfänger-Themen 11
S Element von List<E> in String umwandeln Java Basics - Anfänger-Themen 3
N Unsymmetrisches mehrdimensionales Array in eindimensionales umwandeln Java Basics - Anfänger-Themen 2
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
W Umwandeln von Dezimal in Dual - Ausgabe incl. Rechenschritte Java Basics - Anfänger-Themen 11
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
J array in String umwandeln Java Basics - Anfänger-Themen 1
J array in String umwandeln Java Basics - Anfänger-Themen 3
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
1 Binärdarstellung (als String) in Dezimalzahl umwandeln Java Basics - Anfänger-Themen 8
J subStrings zu int Array umwandeln? Java Basics - Anfänger-Themen 19
K JTextField auslesen, in int umwandeln und in einer anderen Klasse als Zähler verwenden Java Basics - Anfänger-Themen 3
C '.java' in '.exe' umwandeln. Java Basics - Anfänger-Themen 2
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
P Datum umwandeln Java Basics - Anfänger-Themen 5
P [B@6a435f in normalen Zahlen umwandeln, wie? Java Basics - Anfänger-Themen 14
M Input/Output Viele short aus Datei lesen und von Little Endian zu Big Endian umwandeln Java Basics - Anfänger-Themen 12
J C++ Bitmanipulations-Programm in Java umwandeln Java Basics - Anfänger-Themen 10
B Zahl Basis 10 in DualDezimal 16bit umwandeln Java Basics - Anfänger-Themen 8
X Datentypen Int oder String in Bits/Bytes umwandeln Java Basics - Anfänger-Themen 10
W Datentypen String in Quellcode umwandeln Java Basics - Anfänger-Themen 25
J int mit führenden Nullen in String umwandeln Java Basics - Anfänger-Themen 5
B datentyp in binär umwandeln Java Basics - Anfänger-Themen 5
A String in Double umwandeln mit Tests Java Basics - Anfänger-Themen 3
S ArrayList<Byte> in String umwandeln Java Basics - Anfänger-Themen 5
S Datumsstring in datetime umwandeln Java Basics - Anfänger-Themen 2
T int als 100% umwandeln? Java Basics - Anfänger-Themen 7
G Fehler beim Umwandeln eines Strings in int Java Basics - Anfänger-Themen 8
M String in Datum umwandeln mit SimpleDateFormat Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben