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 lese aus zwei Textdateien Daten in zwei HasMaps ein. Anschließend sollen die Schlüssel der ersten Map mit denen der zweiten Map verglichen werden. Sobald eine übereinstimmung gefunden wurde, soll eine Methode ausgeführt werden.
Hier ist der Codeausschnitt, der die Schlüssel vergleichen soll:
Code:
Iterator<Integer> itListe1 = personalListe.keySet().iterator();
Iterator<Integer> itListe2 = mteListe.keySet().iterator();
FileWriter writer = new FileWriter("ausgabe.txt");
int zaehler = 1;
while(itListe1.hasNext()){
int key1 = itListe1.next();
while(itListe2.hasNext()){
int key2 = itListe2.next();
if(mteListe.containsKey(key1)){
Personal p = personalListe.get(key1);
p.setX(maListe.get(key1));
break;
}
}
Mein Problem ist, sobald in Liste 1 mehrere Daten stehen, wird der Code nciht mehr korrekt ausgeführt. Steht nur 1 Element in Liste 1 funktioniert der Code tadellos.
..schmeiß mal den Debugger an!
Und geh in Einzelschritten durch den Code (nur die Problemstelle).
Dannn siehst ob es so läuft, oder ob nicht doch wo ein logischer Fehler drinnen ist!
Ja, aber deine Innere Schleife läuft genau einmal durch, weil der Iterator nach dem 1. Durchlauf am letzten Element angekommen ist und somit bei jedem weiteren Durchlauf von der Methode hasNext() false zurückgeliefert wird.
für das erste Element von Liste 1 wird in der inneren Schleife Liste 2 normal durchlaufen
beim zweiten Element von Liste 1 nicht mehr, da der Iterator itListe2 bereits alle ist, bis zum Ende durchgelaufen ist,
du musst den inneren Iterator
Iterator<Integer> itListe2 = mteListe.keySet().iterator();
jedesmal neu erzeugen!
-------
andererseits verwendest du key2 nirgendwo, wozu wird überhaupt die innere Liste durchlaufen?
reicht nicht
Code:
Iterator<Integer> itListe1 = personalListe.keySet().iterator();
while(itListe1.hasNext()){
int key1 = itListe1.next();
if(mteListe.containsKey(key1)){
Personal p = personalListe.get(key1);
p.setX(maListe.get(key1));
}
}