Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich schreibe grade an einem Programm, bei dem ich String-IDs mit Werten Verknüpfen möchte. Allerdings wenn ich die Maps schrittweise füllen möchte, überschreibt die Map schon vorhandene Einträge. Hier ist mal ein Codeauszug, ähnliche Maps sind noch an mehr Stellen vorhanden.
Code:
HashMap<String,Object> vertexMap = new HashMap<String,Object>();
List<Object> vertexList = new ArrayList<Object>();
try{vertexList = XPath.selectNodes(getIemStateDescriptions(), "./iemStateDescription[@State.type=\"Produkt\"]");}
catch (JDOMException e){System.out.println("JDOMException");}
for(Object o : vertexList){
Element vertex = (Element) o;
for(Object gr : graphList){
Element graphEle = (Element) gr;
Element graphDecomposition = new Element("leer");
try{graphDecomposition = (Element) XPath.selectSingleNode(getIemProcessDecomposition(), "./iemDecompositionElement[@State.ID=\""+graphEle.getAttributeValue("State.ID")+"\"]");}
catch (JDOMException e){System.out.println("JDOMException");}
Object vertexDec = null;
try{vertexDec = XPath.selectSingleNode(graphDecomposition, "./iemSubLevel/iemDecompositionElement[@State.ID=\""+vertex.getAttributeValue("State.ID")+"\"]");}
catch (JDOMException e){System.out.println("JDOMException");}
if(vertexDec != null){
Object newVertex = VertexFactory.getInstance().create();
vertexMap.put(vertex.getAttributeValue("State.ID"), newVertex);
//System.out.println(vertexMap.get(vertex.getAttributeValue("State.ID")).hashCode());
graphMap.get(graphEle.getAttributeValue("State.ID")).addVertex((Number)newVertex);
//System.out.println(vertexMap.get(vertex.getAttributeValue("State.ID")).hashCode());
}
}
}
wie kann man verhindern, dass neue Werte alte überschreiben?
Für mich sieht das so aus, als wolltest du einen Objektbaum aus XML erstellen?
Dann solltest du besser ein Binding Framework wie EMF, oder JaxB verwenden. Wesentlich eleganter als selbst mit einem Parser zu arbeiten.
Ist eine Map WIRKLICH so gedacht, dass da einfach Key-Value-Paare überschrieben werden? Genau das passiert hier nämlich. Und es ist nicht genau ein Objektbaum. Mag sein, dass es elegantere Lösungen gibt, aber ich werde vorerst mit dieser arbeiten.
schreib dann am besten auch mal ein Array, bei dem du mehrere Werte in ein Feld schreiben kannst,
wenn mans das Feld dann auf null setzt erscheint wieder der vorherige Wert
das ist nunmal ein völlig ungewöhnliches Verhalten
Eine Map besteht ein Key/Value Paar.
Key a ist Value x zugeordnet. Jetzt fügst du als neues Paar nochmal Key a und Value Y zu.
Da der Schlüssel schon da ist, wird er neu zugeordnet auf Value Y. Value X bekommst du dafür beim put zurück.
Vielleicht brauchst du eher eine Liste aus Entries?
Das seltsame war, dass die Keys unterschiedlich waren und die Einträge trotzdem überschrieben wurden. Hab meine Eigene Map geschrieben, die tut, was ich will.
Das seltsame war, dass die Keys unterschiedlich waren und die Einträge trotzdem überschrieben wurden. Hab meine Eigene Map geschrieben, die tut, was ich will.