For each-Schleife (Java): Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
K
Zeile 3: Zeile 3:
 
== Syntax ==
 
== Syntax ==
 
Der Syntax der Schleife lautet:
 
Der Syntax der Schleife lautet:
<code=java>for( Typ element : kollektion ){
+
<syntaxhighlight lang="java">for( Typ element : kollektion ){
 
   ... // beliebiger Code, der "element" verwendet
 
   ... // beliebiger Code, der "element" verwendet
}</code=java>
+
}</syntaxhighlight>
  
 
Hier gilt:
 
Hier gilt:
Zeile 15: Zeile 15:
 
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:
<code=java>X[] array = ...
+
<syntaxhighlight lang="java">X[] array = ...
  
 
// for( X element : array )
 
// for( X element : array )
Zeile 22: Zeile 22:
 
...
 
...
 
}
 
}
</code=java>
+
</syntaxhighlight>
  
 
Für Iterables wie eine {{JAPI|List}} oder ein {{JAPI|Set}} wird hingegen ein {{JAPI|Iterator}} verwendet:
 
Für Iterables wie eine {{JAPI|List}} oder ein {{JAPI|Set}} wird hingegen ein {{JAPI|Iterator}} verwendet:
<code=java>Iterable<X> iterable = ... // z.b. eine Liste
+
<syntaxhighlight lang="java">Iterable<X> iterable = ... // z.b. eine Liste
  
 
// for( X element : iterable )
 
// for( X element : iterable )
Zeile 33: Zeile 33:
 
...
 
...
 
}
 
}
</code=java>
+
</syntaxhighlight>
  
 
Zu beachten ist, dass der Typ von "element" in der for each-Schleife kein [[Primitivtypen_und_Wrapperklassen|Primitives]] sein darf. Nur [[Klasse|Klassen]] sind erlaubt.
 
Zu beachten ist, dass der Typ von "element" in der for each-Schleife kein [[Primitivtypen_und_Wrapperklassen|Primitives]] sein darf. Nur [[Klasse|Klassen]] sind erlaubt.
Zeile 40: Zeile 40:
 
* 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.
<code=java>// Kollektion aufbauen
+
<syntaxhighlight lang="java">// Kollektion aufbauen
 
List<String> list = new ArrayList<String>();
 
List<String> list = new ArrayList<String>();
 
 
Zeile 50: Zeile 50:
 
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 );
}</code=java>
+
}</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.
<code=java>String[] array = { "a", "b", "c" };
+
<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>
  
 
[[Kategorie:Java]]
 
[[Kategorie:Java]]
 
[[Kategorie:Java Grundlagen]]
 
[[Kategorie:Java Grundlagen]]

Version vom 8. März 2018, 19:49 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.

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 Primitives sein darf. Nur Klassen 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 );
}