Verschachtelte Map auslesen

Chebura

Mitglied
Hallo zusammen,
ich stehe vor einem seltsamen Problem.
Wenn ich Werte aus der äußeren Map auslese, so sind die Keys nicht in der Rheinfolge, in der ich sie einlesen habe.
Will ich dann Value aulesen (was eine Map darstellt), so hat es keine Werte.
All das passiert, obwohl beim Einlesen alles richtig abläuft.

Java:
public class meineKlasse {
   HashMap<String, HashMap> mapA;
   HashMap<String, String> mapB;

   //Einlesen attributeList hat schon Werte:
   for (Object obj: attributeList) {
     Attribute attr = (Attribute) obj;
     mapB.put(attr.getName(), attr.getValue());
   }
   this.mapA.put(name, this.mapB);
   this.mapB.clear();

   //Auslesen....falsche Rheinfolge in der äußeren Map, die innere Map ist leer:
   private void Funktion() {
     for (HashMap.Entry<String, HashMap> entrySet: mapA.entrySet()) {
       System.out.println("Äusere Map: " + entrySet.getKey());
       HashMap<String, String > value = entrySet.getValue(); //Hole die innere mapB
       for (HashMap.Entry<String, String> entry: value.entrySet()) {
         System.out.println("jeweiliger Schluessel von mapB: " + entry.getKey() + "jeweiliger Wert von mapB: " + entry.getValue());
       }
     }
   }
}

Wieso kann ich nicht das auslesen, was ich eingelesen hab?
Danke für die Aufklärung.
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Weil du deine mapB die ganze Zeit löscht. Du speicherst in MapA nur die Referenz auf die MapB und nicht das Objekt.

EDIT: Hier wie deine Klasse richtig aussehen sollte gesamt mit einer KSKB:
Java:
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class Test {
     public static void main(String... args) {
         MeineKlasse mk = new MeineKlasse();
         mk.put("Test1", Arrays.asList(new Attribute("1", "1")));
         mk.put("Test2", Arrays.asList(new Attribute("1", "1"), new Attribute("2", "2")));
         mk.put("Test3", Arrays.asList(new Attribute("1", "1"), new Attribute("2", "2"), new Attribute("3", "3")));
         mk.print();
     }
}

class MeineKlasse {
     Map<String, Map<String, String>> mapA = new LinkedHashMap<>();
     
     public void put(String name, List<Object> attributeList) {
         Map<String, String> mapB = new HashMap<>();
         for (Object obj : attributeList) {
             if (obj instanceof Attribute) {
                 Attribute attr = (Attribute) obj;
                 mapB.put(attr.getName(), attr.getValue());
             }
         }
         mapA.put(name, mapB);
     }
     
     public void print() {
         for (Entry<String, Map<String, String>> entrySet : mapA.entrySet()) {
             System.out.println("Äußere Map: " + entrySet.getKey());
             for (Entry<String, String> entry : entrySet.getValue().entrySet()) {
                 System.out.println("Schlüssel von mapB: " + entry.getKey() + " Wert von mapB: " + entry.getValue());
             }
         }
     }
}

class Attribute {
     private String name, value;
     
     public Attribute(String name, String value) {
         super();
         this.name = name;
         this.value = value;
     }
     
     public String getName() {
         return name;
     }
     
     public String getValue() {
         return value;
     }
}
 
Zuletzt bearbeitet:

Chebura

Mitglied
danke für deine schnelle Antwort.
ich lösche sie deswegen, damit der nächste Key von der mapA nur die neuen Werte der mapB erhält und nicht neue+alte Werte.
Das mit der Referenz hab ich mir schon gedacht. Wie kann ich den das Object selbst als "Value" zu dem Key der MapA speichern?
 

Elenteria

Bekanntes Mitglied
Das Object selbst als Value zu übergeben Funktioniert meines Wissens nach in Java nicht(korrigiert mich wenn Oracle sich da was neues Überlegt hat). In Java wird Grundsätzlich mit Referenzen gearbeitet, außer bei den primitiven Datentypen.
 

Chebura

Mitglied
Vielen Dank für die Antworten.
Die wesentliche Sache die ich übernommen habe, ist dass man die äußere als "LinkedHashMap" und den Value-Wert als Map ausschreiben muss sprich: map<String, map<String, String> = new LinkedHashmap.
Das selbe noch beim Entry in der For-Schleife.
Natürlich hätte ich da jedesmal speicher neu allokieren müssen und nicht die map mit "clear" entleeren
Vielen Dank
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Verschachtelte Arraylist und deren Größe auslesen Java Basics - Anfänger-Themen 7
M sehr weit verschachtelte XML-datei mit jdom auslesen Java Basics - Anfänger-Themen 4
S Verschachtelte for-Schleife Java Basics - Anfänger-Themen 2
laxla123 Verschachtelte If-Else Schleife Java Basics - Anfänger-Themen 21
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
Düsseldorf2002 Datentypen Verschachtelte LinkedList Java Basics - Anfänger-Themen 5
J Verschachtelte Methoden Java Basics - Anfänger-Themen 9
P Verschachtelte Hashmap Java Basics - Anfänger-Themen 6
P Verschachtelte Array Liste Java Basics - Anfänger-Themen 2
B Verschachtelte For Schleifen Java Basics - Anfänger-Themen 8
W Verschachtelte Objekte wieder auspacken Java Basics - Anfänger-Themen 3
S Verschachtelte Schleife Java Basics - Anfänger-Themen 3
F Methoden Verschachtelte if else Methode Java Basics - Anfänger-Themen 10
Z Verschachtelte If-Bedingung Java Basics - Anfänger-Themen 6
Y Verschachtelte For-Schleife Java Basics - Anfänger-Themen 5
D verschachtelte Schleifen Java Basics - Anfänger-Themen 6
M Verschachtelte Forschleifen Java Basics - Anfänger-Themen 2
F Klassen Zugriff auf verschachtelte Objekte Java Basics - Anfänger-Themen 11
J static verschachtelte Klassen und innere Klassen Java Basics - Anfänger-Themen 1
TheMenox Verschachtelte If Bedingung Java Basics - Anfänger-Themen 4
H Best Practice Wie mit break verschachtelte Schleifen komplett verlassen? Java Basics - Anfänger-Themen 2
F Verschachtelte Schleifen Java Basics - Anfänger-Themen 4
J Hilfe verschachtelte Schleifen Java Basics - Anfänger-Themen 5
F Erste Schritte Switch case vs. Verschachtelte If Anweisung Java Basics - Anfänger-Themen 11
G Collections verschachtelte ArrayList abfüllen Java Basics - Anfänger-Themen 5
X verschachtelte suche Java Basics - Anfänger-Themen 8
S Verschachtelte Exceptions - Übersicht verbessern Java Basics - Anfänger-Themen 2
D Verschachtelte Objekterzeugung Java Basics - Anfänger-Themen 6
S verschachtelte for-Schleife Java Basics - Anfänger-Themen 6
X Verschachtelte Annotationen Java Basics - Anfänger-Themen 9
J verschachtelte Schleife Java Basics - Anfänger-Themen 10
P Verschachtelte Schleife vorzeitig abbrechen. Java Basics - Anfänger-Themen 50
S verschachtelte for Schleife und Ergebniss. Java Basics - Anfänger-Themen 3
J verschachtelte for-schleifen Java Basics - Anfänger-Themen 2
S Verschachtelte Klassen Java Basics - Anfänger-Themen 12
D Verschachtelte IF-Anweisung Java Basics - Anfänger-Themen 10
C Verschachtelte for-schleifen Java Basics - Anfänger-Themen 10
C Verschachtelte For-Schleifen Java Basics - Anfänger-Themen 5
3 Verschachtelte Zuweisung Java Basics - Anfänger-Themen 4
M Tief verschachtelte Packages Java Basics - Anfänger-Themen 7
T add-Methode für verschachtelte ArrayLists Java Basics - Anfänger-Themen 10
C Verschachtelte For-Schleife Java Basics - Anfänger-Themen 6
E Verschachtelte If-Anweisungen - "else without if" Java Basics - Anfänger-Themen 4
T Datentypen Verschachtelte Map durchlaufen Java Basics - Anfänger-Themen 4
P Verschachtelte For-Schleifen Java Basics - Anfänger-Themen 4
F Verschachtelte Arrays kopieren und überschreiben Java Basics - Anfänger-Themen 4
J Verschachtelte for schleife mit dynamischer Anzahl an Schleifen Java Basics - Anfänger-Themen 10
M Verschachtelte Strukturen. Java Basics - Anfänger-Themen 7
J Verschachtelte for-Schleife mit Löschen von Iterationen. Wie über Iterator abbilden? Java Basics - Anfänger-Themen 6
M Viele verschachtelte Schleifen Java Basics - Anfänger-Themen 14
A Verschachtelte Hashtable ausgeben. Java Basics - Anfänger-Themen 3
W verschachtelte while schleife Java Basics - Anfänger-Themen 8
G Verschachtelte Case Fallunterscheidung Java Basics - Anfänger-Themen 7
W verschachtelte For-Schleife - continue Java Basics - Anfänger-Themen 8
R Verschachtelte Schleife? Java Basics - Anfänger-Themen 6
S verschachtelte while Schleifen Java Basics - Anfänger-Themen 5
R Bedingte Opeatoren / Verschachtelte Operatoren Java Basics - Anfänger-Themen 4
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
T array auslesen Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Jsonfile auslesen Java Basics - Anfänger-Themen 8
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
L Zeichen an bestimmter Stelle auslesen Java Basics - Anfänger-Themen 4
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N JTable auslesen Java Basics - Anfänger-Themen 6
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
F Webseiten Quelltext auslesen Java Basics - Anfänger-Themen 5
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
S Aus einer .bz2 Datei auslesen Java Basics - Anfänger-Themen 2
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D XML von Seite auslesen Jsoup Java Basics - Anfänger-Themen 2
I Druckerauflösung auslesen - mittlerweile möglich? Java Basics - Anfänger-Themen 4
B WSDL auslesen? Java Basics - Anfänger-Themen 8
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben