Hallo an alle,
ich habe ein Problem mit HashMaps und xml. Vorab muss ich sagen, dass ich noch wenig bis gar keine Erfahrungen weder mit xml noch mit HashMaps habe ^^
Also, über ein .xml file bekomme ich eine unbekannte Anzahl an products. Diese products lese ich aus und speichere diese in eine ArrayList ( nodeName + trennzeichen + nodeValue ). Das klappt ohne Probleme für jegliche Tiefe. Danach versuche ich diese list in eine HashMap zu speichern ( nodeName = key ). So, hier kommt das Problem:
Da keine keys doppelt vorkommen dürfen will ich je product eine eigene HashMap machen. Hier ist mal mein code:
Meine Ausgabe in der console ist:
Map size: 29
Hashlist: 1
Map: {}
Map size: 29
Hashlist: 2
Map: {}
Kann ich keine HashMaps in eine ArrayList speichern? Welche Art von list kann das, oder muss ich ein HashMap[] machen? Wenn ich ein HashMap[] machen muss, wie mach ich des mit der Größe des arrays?
Vielen Dank im vorraus.
peace, Shoox
ich habe ein Problem mit HashMaps und xml. Vorab muss ich sagen, dass ich noch wenig bis gar keine Erfahrungen weder mit xml noch mit HashMaps habe ^^
Also, über ein .xml file bekomme ich eine unbekannte Anzahl an products. Diese products lese ich aus und speichere diese in eine ArrayList ( nodeName + trennzeichen + nodeValue ). Das klappt ohne Probleme für jegliche Tiefe. Danach versuche ich diese list in eine HashMap zu speichern ( nodeName = key ). So, hier kommt das Problem:
Da keine keys doppelt vorkommen dürfen will ich je product eine eigene HashMap machen. Hier ist mal mein code:
Java:
public ArrayList getListOfHashMaps() {
//enthält die xml Daten (name+trennzeichen+value)
ArrayList xmlList = getList();
ArrayList hashlist = new ArrayList();
boolean check = false;
HashMap map = new HashMap();
for (int i = 0; i < xmlList.size() - 1; i++){
String[] datensatz = xmlList.get(i).toString().split(trennzeichen);
String key = datensatz[0];
String value = datensatz[1];
// Um unnütze Informationen im header auszuschließen
if (key.equals(startNode) || check){
check = true;
if (key.equals(startNode)){}else{
map.put(key, value);
}
if ((xmlList.get(i + 1).toString().split(trennzeichen)[0]).equals(startNode)){
System.out.println("Map size: " + map.size());
hashlist.add(map);
System.out.println("Hashlist: "+hashlist.size());
map.clear();
System.out.println("Map: "+hashlist.get(hashlist.size()-1).toString());
}
}
}
return hashlist;
}
Meine Ausgabe in der console ist:
Map size: 29
Hashlist: 1
Map: {}
Map size: 29
Hashlist: 2
Map: {}
Kann ich keine HashMaps in eine ArrayList speichern? Welche Art von list kann das, oder muss ich ein HashMap[] machen? Wenn ich ein HashMap[] machen muss, wie mach ich des mit der Größe des arrays?
Vielen Dank im vorraus.
peace, Shoox