Ich erstellte eine Klasse Foo
, die die Methode toArray()
hat, die eine Array<Int>
zurückgibt.Iterieren über eine HashMap von HashMaps in Java (oder Scala)
Jetzt habe ich eine HashMap Zuordnung Strings zu HashMaps, die Objekte zu Foo zuordnen. Das heißt:
HashMap<String,HashMap<Object,Foo>>
Und ich möchte ein neues Objekt des Typs schaffen:
HashMap<String,HashMap<Object,Array<Int>>>
, die durch den Aufruf der Funktion toArray erhalten() für jedes Element Foo in der ursprünglichen Hashmap.
Um dies zu tun ich normalerweise etwas wie tun würde:
public static HashMap<String,HashMap<Object,Array<Int>>> changeMap(Map mpOld) {
Object key2;
String key1;
Iterator it2;
HashMap<String,HashMap<Object,Array<Int>>> mpNew=
new HashMap<String,HashMap<Object,Array<Int>>>()
Iterator it1 = mpOld.keySet().iterator();
while (it1.hasNext()) {
key1=it1.next();
it2= mpOld.get(key1).keySet().iterator();
mpNew.put(key1,new HashMap<Object,Array<Int>>())
while (it2.hasNext()) {
key2=it2.next();
mpNew.get(key1).put(key2,mpOld.get(key1).get(key2).toArray());
//TODO clear entry mpOld.get(key1).get(key2)
}
//TODO clear entry mpOld.get(key1)
}
return mpNew;
}
Ein ähnlicher Code funktioniert gut, aber die Größe des HashMap ist zu groß, zwei von ihnen in Erinnerung zu halten. Wie Sie sehen können, habe ich zwei Punkte hinzugefügt, wo ich einige Einträge löschen möchte. Das Problem ist, wenn ich es tue, bekomme ich entweder einen Gleichzeitigkeitsfehler, oder die Iteratorschleife beendet gerade.
Ich frage mich, ob es eine bessere Möglichkeit gibt, durch die Maps zu iterieren und die Informationen zu kopieren.
Auch arbeite ich in einem Scala-Projekt, aber hier muss ich Java-Typen für einige Kompatibilitätsprobleme verwenden. Obwohl Java.util.HashMap
kein Iterator ist, hat Scala vielleicht eine versteckte Funktionalität, um damit umzugehen?
Danke,
Danke, aber obwohl ich Scala für das Projekt bin verwenden, sind die HashMaps Java HashMaps, so dass Sie nicht mapVAlues auf sie anrufen können. Ist das eine Möglichkeit, dies mit JavaConversions zu lösen? – Skuge
Konnten Sie Ihr Problem lösen? Hat meine Hilfe bearbeitet? –