Self-paced course

Objektorientierte Programmierung in Java

Offered by openHPI-Java-Team

4.4 Foreach-Schleifen

Hier findet ihr noch einige Code-Beispiele und Besonderheiten, die man über foreach-Schleifen wissen sollte.

Primitive Arrays

String[] r = {"Robin","Ronja","Robur"};
for (String s : r ) { 
    System.out.println(s);
}

ArrayList

ArrayList<String> allMyRobots = new ArrayList<>();
allMyRobots.add("Robin");
allMyRobots.add("Ronja");
allMyRobots.add("Robur");
allMyRobots.add("Rolf");

for (String s : allMyRobots ) { 
    System.out.println(s);
}

HashMap

Direktes iterieren über eine HashMap ist mit einer foreach-Schleife nicht möglich.
Man kann allerdings über die Menge der Schlüssel (Key Set) einer HashMap iterieren.
Mittels der Schlüssel kann man dann wiederum auf die Elemente der HashMap zugreifen.
Die HashMap bzw. ihr Key Set sind nicht sortiert.

HashMap<String, String> roboLympics = new HashMap<>();
roboLympics.put("ronja", "Gold");
roboLympics.put("robin", "Silber");
roboLympics.put("robur", "Bronze");

for (String s : roboLympics.keySet() ) { 
    System.out.println(s);
    System.out.println(roboLympics.get(s));
}

Löschen von Elementen in foreach-Schleifen nicht möglich

Versucht man innerhalb einer foreach-Schleife Elemente aus einer Collection zu löschen, wird eine ConcurrentModificationException ausgelöst.
Sollte diese Operation notwendig sein, muss man mit Iteratoren arbeiten. Iteratoren werden wir in diesem Kurs nicht mehr behandeln. Wir greifen dieses Thema im folgenden Java-IDE Kurs nochmal auf.

for (String s : allMyRobots ) { 
    System.out.println(s);
    allMyRobots.remove(s);
}

Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at Main.main(Main.java:32)