Springe zum Inhalt

Der Iterator – iterieren über Java Collections

Die Java Collections implementieren die Schnittstelle java.lang.Iterable<T> und stellen somit eine Iterator Methode zur Verfügung. Mit dieser Methode besteht die Möglichkeit alle Objekte der Datenstruktur nacheinander einzeln zu extrahieren. Im Folgenden möchte ich kurz die Verwendung der Iterator für eine Liste an einem Codebeispiel veranschaulichen.

Beispielcode – iterieren über eine Java-List

Wie wir im folgenden sehen, wird der Iterator erzeugt, indem ein Objekt vom Typ Iterator<E> erzeugt wird und dieses dann per Instanz-Methodenaufruf an den Iterator der konkreten Liste gebunden wird. Im folgenden kann der Iterator dann über die Variable iter angesprochen werden.

Erwähnenswert ist vielleicht noch, dass ich in der Definition dieser Klasse gegen die Schnittstelle List<E> programmiert habe. Das beudeutet im Grunde nicht anderes, als dass ich die Liste vom Typ der Schnittstelle anlege und mich auf die Methoden der Schnittstelle begrenze. Damit verzögere ich die Wahl der konkreten Ausprägung der Liste (z.B. ArrayList,… – siehe Artikel über Java Collections) auf den Zeitpunkt der Instanz-Erzeugung und habe somit eine gewisse Generizität und höhere Flexibilität erreicht.

Codebeispiel - Iterator
import java.util.*;
public class IterationAlt {

	public static void main (String[]args){
		//Array definieren
		int[] arr={1,2,3,4,5,6,7,8,9,10};
		
		//Collection anlegen - hierbei wird gegen die Schnittstelle programmiert
		//das heisst dass man in der deklaration der Collection erstmal den Interfacetyp
		//verwendet, in diesem Fall also List<T> anstatt ArrayList<T> dies erhöht die
		//flexibilität da nur die Klasse in der Instanzerzeugung verändert werden muss
		List<Integer> liste=new ArrayList<Integer>();
		
		for (int i=0;i<arr.length;i++){
			//hier passiert ein Autoboxing und zwar von int in den Wrappertyp Integer
			liste.add(arr[i]);
		}//end for
		
		Iterator<Integer> iter= liste.iterator();
		while(iter.hasNext()){
			//hier passiert ein Autounboxing!! iter.next() liefert referenzen auf Objekte von Typ Integer
			//die System.out.print Methode wandelt automatisch in den Typ int zurück und schreibt es in den Stream
			System.out.println(iter.next());
		}//end while
		
		System.out.println("neuer Iterator über die erweiterte for-Schleife \n");
		
		//erweiterte for-Schleife für Iterationen
		for (Integer wert : liste){
			//hier wird die Variable wert für jede Schleife an einen Wert der Collection gebunden und kann verwendet werden
			System.out.println(wert);
		}
		System.out.println(liste);
		}
}
Veröffentlicht inJavaTechnik und Technologie

Sei der Erste der einen Kommentar abgibt

Schreibe einen Kommentar