For each-Schleife (Java)

Aus Byte-Welt Wiki
(Weitergeleitet von For each-Schleife)
Zur Navigation springenZur Suche springen

Die "for each" Schleife wurde mit Java 1.5 eingeführt. Sie erlaubt dem Programmier mit wenig Code alle Elemente einer Kollektion (zum Beispiel eine java.util.List oder ein Array) abzufragen. Die for each-Schleife kann in einigen Fällen die for- oder die while-Schleife ersetzen.

Syntax

Der Syntax der Schleife lautet:

for( Typ element : kollektion ){
  ... // beliebiger Code, der "element" verwendet
}

Hier gilt:

Semantik

Die neue for each-Schleife kann man auch mit einer normalen for- oder while-Schleife simulieren. Dabei muss man unterscheiden, ob die Kollektion ein Array oder ein Iterable ist. Für Arrays benutzt man einen Zähler:

X[] array = ...

// for( X element : array )
for( int i = 0; i < array.length; i++ ){
	X element = array[i];
	...
}

Für Iterables wie eine List oder ein Set wird hingegen ein Iterator verwendet:

Iterable<X> iterable = ... // z.b. eine Liste

// for( X element : iterable )
Iterator<X> iterartor = iterable.iterator();
while( iterator.hasNext() ){
	X element = iterator.next();
	...
}

Zu beachten ist, dass der Typ von "element" in der for each-Schleife kein primitiver Datentyp sein darf. Nur Klassen bzw. Objekte sind erlaubt.

Beispiele

Folgender Code zeigt die Verwendung der for each-Schleife.

  • In Zeile 1 bis 6 wird eine Liste zusammengebaut, welche die Elemente "a", "b" und "c" beinhaltet.
  • In Zeile 7 bis 10 wird jedes Element ausgegeben.
// Kollektion aufbauen
List<String> list = new ArrayList<String>();
		
list.add( "a" );
list.add( "b" );
list.add( "c" );

// Die for each-Schleife anwenden
for( String element : list ){
	System.out.println( "Dies war in der Liste: " + element );
}

Ohne den Code der Schleife zu ändern, kann man auch die Elemente eines Arrays betrachten.

String[] array = { "a", "b", "c" };
		
for( String element : array ){
	System.out.println( "Dies war in dem Array: " + element );
}

In Java 8 wurde die Collection-API erweitert. So können nun Elemente einer Liste über die neue in Iterable eingeführte Methode default void forEach(Consumer<? super T> action) behandelt werden.

Ein Beispiel-Aufruf sieht so aus:

List<String> myList = new ArrayList<>();
myList.add("a");
myList.add("b");
myList.add("c");		

myList.forEach(System.out::println());

Siehe auch


Fragen

Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!

Wir helfen dir gerne!


Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!

Du musst angemeldet sein, um einen Kommentar abzugeben.