For each-Schleife (Java): Unterschied zwischen den Versionen
K (→Beispiele) |
K (→Beispiele) |
||
(10 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | 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 {{ | + | 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 {{JAPI|java.util.List}} oder ein [[Array]]) abzufragen. Die for each-Schleife kann in einigen Fällen die [[For-Schleife|for]]- oder die [[While-Schleife|while]]-Schleife ersetzen. |
== Syntax == | == Syntax == | ||
Der Syntax der Schleife lautet: | Der Syntax der Schleife lautet: | ||
− | < | + | <syntaxhighlight lang="java">for( Typ element : kollektion ){ |
... // beliebiger Code, der "element" verwendet | ... // beliebiger Code, der "element" verwendet | ||
− | }</ | + | }</syntaxhighlight> |
Hier gilt: | Hier gilt: | ||
* ''Typ'' ist eine [[Klasse]] | * ''Typ'' ist eine [[Klasse]] | ||
* ''element'' ist eine [[Variable]]. Innerhalb der Schleife kann diese Variable frei verwendet werden | * ''element'' ist eine [[Variable]]. Innerhalb der Schleife kann diese Variable frei verwendet werden | ||
− | * ''kollektion'' ist ein [[Array]] oder eine [[Instanz]] eines {{ | + | * ''kollektion'' ist ein [[Array]] oder eine [[Instanz]] eines {{JAPI|Iterables}} |
== Semantik == | == Semantik == | ||
Die neue for each-Schleife kann man auch mit einer normalen [[For-Schleife|for]]- oder [[While-Schleife|while]]-Schleife simulieren. Dabei muss man unterscheiden, ob die Kollektion ein Array oder ein Iterable ist. | Die neue for each-Schleife kann man auch mit einer normalen [[For-Schleife|for]]- oder [[While-Schleife|while]]-Schleife simulieren. Dabei muss man unterscheiden, ob die Kollektion ein Array oder ein Iterable ist. | ||
Für Arrays benutzt man einen Zähler: | Für Arrays benutzt man einen Zähler: | ||
− | < | + | <syntaxhighlight lang="java">X[] array = ... |
// for( X element : array ) | // for( X element : array ) | ||
Zeile 22: | Zeile 22: | ||
... | ... | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
− | Für Iterables wie eine {{ | + | Für Iterables wie eine {{JAPI|List}} oder ein {{JAPI|Set}} wird hingegen ein {{JAPI|Iterator}} verwendet: |
− | < | + | <syntaxhighlight lang="java">Iterable<X> iterable = ... // z.b. eine Liste |
// for( X element : iterable ) | // for( X element : iterable ) | ||
Zeile 33: | Zeile 33: | ||
... | ... | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
+ | |||
+ | Zu beachten ist, dass der Typ von "element" in der for each-Schleife kein [[Primitivtypen_und_Wrapperklassen|primitiver Datentyp]] sein darf. Nur [[Klasse|Klassen]] bzw. [[Objekt|Objekte]] sind erlaubt. | ||
− | |||
== Beispiele == | == Beispiele == | ||
Folgender Code zeigt die Verwendung der for each-Schleife. | 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 1 bis 6 wird eine Liste zusammengebaut, welche die Elemente "a", "b" und "c" beinhaltet. | ||
* In Zeile 7 bis 10 wird jedes Element ausgegeben. | * In Zeile 7 bis 10 wird jedes Element ausgegeben. | ||
− | < | + | <syntaxhighlight lang="java">// Kollektion aufbauen |
List<String> list = new ArrayList<String>(); | List<String> list = new ArrayList<String>(); | ||
Zeile 50: | Zeile 51: | ||
for( String element : list ){ | for( String element : list ){ | ||
System.out.println( "Dies war in der Liste: " + element ); | System.out.println( "Dies war in der Liste: " + element ); | ||
− | }</ | + | }</syntaxhighlight> |
Ohne den Code der Schleife zu ändern, kann man auch die Elemente eines Arrays betrachten. | Ohne den Code der Schleife zu ändern, kann man auch die Elemente eines Arrays betrachten. | ||
− | < | + | <syntaxhighlight lang="java">String[] array = { "a", "b", "c" }; |
for( String element : array ){ | for( String element : array ){ | ||
System.out.println( "Dies war in dem Array: " + element ); | System.out.println( "Dies war in dem Array: " + element ); | ||
} | } | ||
− | </code=java> | + | </syntaxhighlight> |
+ | |||
+ | In Java 8 wurde die Collection-API erweitert. So können nun Elemente einer Liste über die neue in {{JAPI|Iterable}} eingeführte Methode <code>default void forEach(Consumer<? super T> action)</code> behandelt werden. | ||
+ | |||
+ | Ein Beispiel-Aufruf sieht so aus: | ||
+ | <syntaxhighlight lang="java">List<String> myList = new ArrayList<>(); | ||
+ | myList.add("a"); | ||
+ | myList.add("b"); | ||
+ | myList.add("c"); | ||
+ | |||
+ | myList.forEach(System.out::println()); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | =Siehe auch= | ||
+ | *[[For-Schleife]] | ||
+ | |||
+ | {{Fragen stellen}} | ||
− | |||
− | |||
[[Kategorie:Java Grundlagen]] | [[Kategorie:Java Grundlagen]] |
Aktuelle Version vom 25. November 2019, 10:05 Uhr
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.
Inhaltsverzeichnis
Syntax
Der Syntax der Schleife lautet:
for( Typ element : kollektion ){
... // beliebiger Code, der "element" verwendet
}
Hier gilt:
- Typ ist eine Klasse
- element ist eine Variable. Innerhalb der Schleife kann diese Variable frei verwendet werden
- kollektion ist ein Array oder eine Instanz eines
Iterables
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!
- Besuche uns im Byte-Welt-Forum
- Besuche unseren Chat
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.