foreach-Schleife in Java 1.5

sun-java-logoAus PHP kennt man unteranderem die beliebte foreach-Schleife, dort kann man problemlos über ein Array oder eine Liste iterieren, dies geht zwar auch mit einer for-Schleife, doch man benötigt ja nicht immer den Zählindex und mit der foreach-Schleife geht vieles dann doch leichter und schneller, vor allem muss man nicht soviel tippen ;).

In Java gibt es seit Version 1.5 eine entsprechende Variante, angelehnt an die for-Schleife.

public class ForEach {
 
	protected static String[] color = new String[] { "blau", "grün", "rot", "gelb", "weiß" };
 
	public static void main(String[] args) {
 
		// foreach-Schleife
		for (String element : color)
			System.out.println(element);
 
		// normale for-Schleife
		for (int i = 0; i < color.length; i++)
			System.out.println(color[i]);
 
	}
}

Wie man sehen kann handelt es sich um eine etwas abgewandelte for-Schleife, mit diesem Konstrukt kann man über Arrays, Listen, etc. iterieren und muss sich nicht mehr um die Länge dergleichen kümmern. Jedes Element wird einfach einmal „abgearbeitet“. Als Vergleich oben auch mal die normale for-Schleife. Man sieht das man bei der for-Schleife wesentlich mehr „coden“ muss als bei einer foreach-Variante. Zu beachten ist allerdings das die for-Schleife mit den wirklichen Daten im Speicher arbeitet, wohingegen die foreach-Schleife nur eine Kopie nutzt, also Veränderungen an den Elementen innerhalb der foreach-Schleife nur lokal gültig sind und nach außen hin verworfen werden!

Zu lesen ist der Doppelpunkt innerhalb der foreach-Schleife übrigens als „in“, also zum Beispiel oben: Für jedes Element in dem Array Color.

Hinweis:
Wie Micha richtig bemerkt hat, sollte man bei der foreach-Schleife in Java eher auf Arrays verzichten. Diese Variante funktioniert zwar ebenfalls, verursacht aber durch den Autoboxing Mechanismus mehr Last als nötig. Ein Objekt vom Typ java.util.List kann hingegen schneller (da ohne Autoboxing) durchlaufen werden. Dies fällt bei kleinen Schleifen kaum auf, sollte bei Großen jedoch bedacht werden.

Weitere Informationen dazu gibt es bei developer.com oder bei Sun selber.

6 Gedanken zu „foreach-Schleife in Java 1.5

  • 19. Januar 2009 um 11:17
    Permalink

    Hallo Tobias,

    das Foreach-Konzept basiert auf einem Autoboxing-Mechanismus und sollte nicht unbedingt auf klassische Arrays (Arrays mit [ und ]) in Java benutzt werden.

    Nimm lieber eine Implementation von java.util.List wie ArrayList, dann hat es die Java-VM einfacher, denn dann wird eigentlich nur noch ein Iterator über die Liste erzeugt und es macht dein Programm schneller.

    Das dürfte in deinem kleinen Beispiel nicht relevant sein, aber in größeren Listen und Arrays kann es schon einen messbaren Unterschied machen.

    Ciao, Micha

    Antworten
  • 19. Januar 2009 um 18:10
    Permalink

    Hi Micha,

    stimmt, da hast du Recht, das habe ich hierbei jetzt nicht bedacht, danke für den Hinweis!
    Habe es oben ergänzt.

    MfG Tobias

    Antworten
  • 26. Januar 2009 um 17:13
    Permalink

    Hallo, ich wollte mal kurz nebenbei fragen, welches Plugin du einsetzt um die Codes so darzulegen und ob man damit auch
    PHP / MySQL / HTML Code darstellen kann?
    Danke

    Antworten
  • 17. Juli 2010 um 01:09
    Permalink

    Ich bin immer froh, solche Seiten wie diese hier zu finden. Ein einfaches Lernen aus Büchern ist mit einfach zu trocken, Internetseiten bieten optisch einfach viel mehr. Vielen Dank für die Mühen.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen zum Datenschutz...

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen