Problem mit For-schleife

omen

Mitglied
Hallo alle,

der folgende kleine code ist ausführbei und ihr könnt ihn testen. Mein Problem ist bei der For-Schleife. sie wird nur einmal ausgeführt, obwohl in tokenMap.keySet() mehrere Elemente gibt. Kann mir jemand sagen, wo das problem liegt? 🙁

danke viel mals im voraus.

der Code

Java:
import java.util.HashMap;
 
public class Test {
	 
	HashMap<String, Integer> tokenMap=new HashMap<String, Integer>();
	 
	private void check() {
        try {
            for (String token : tokenMap.keySet()) {
                if (token.length() < 2 || token.length() > 3) {
                        tokenMap.remove(token);
                }
            }
        }
        catch(Exception e) {}
       
    }
    
	public static void main(String[] args){ 
		Test t=new Test();
		t.tokenMap.put("a", 1);
		t.tokenMap.put("bb", 1);
		t.tokenMap.put("cccccccccc", 1);
		t.check();
		System.out.println(t.tokenMap.keySet());
}
	}
 
Lasse doch mal den try-catch weg ...dann siehst du dass eine Exception geworfen wird, nämlich eine ConcurrentModificationException ...

Java:
	for (Iterator<String> iterator = tokenMap.keySet().iterator(); iterator.hasNext();) {
	    String s = iterator.next();
	    //if usw. und dann mit iterator.remove() löschen
	}
 
vielen Dank für die super schnelle Antwort...

ich probiere es und melde mich, falls ich noch n Problem habe.


gruß,
Omen
 
Und wenn, dann sicher nicht [c]Exception[/c] an sich sondern eine bestimmte Exception fangen und darauf reagieren. Oder zumindest mit [c]printStackTrace()[/c] oder einem Logger die Nachricht ausgeben/loggen.
 

Zurück
Oben