Zum Hauptinhalt springen

Java Collections Framework

Collections sind Behälter, die beliebig viele Objekte aufnehmen können. Der Behälter übernimmt dabei die Verantwortung für die Elemente. Collections werden auch als (Daten-)Sammlungen bezeichnet. Alle Collections-Schnittstellen und Klassen befinden sich im Paket java.util. Die Grundformen der Datensammlungen sind die Schnittstellen List<E>, Set<E> und Queue<E>. Zu allen Schnittstellen existieren konkrete Implementierungen sowie abstrakte Klassen, die zum Erstellen eigener Collections-Klassen verwendet werden können.

Unter einer Liste (List) versteht man eine geordnete Folge von Objekten. Listen können doppelte Elemente enthalten. Der Zugriff auf die Elemente erfolgt über den Index oder sequentiell.

Konkrete Implementierungen der Schnittstelle List<E> stellen die Klassen ArrayList<E> und LinkedList<E> (siehe auch Feldbasierte Listen und Listen) dar.

Iteratoren

Ein Iterator erlaubt den sequentiellen Zugriff auf die Elemente einer Datensammlung. Iteratoren werden durch die Schnittstelle Iterator<E> definiert; diese bietet die Methoden boolean hasNext(), E next() und void remove(). Die von Iterator<E> abgeleitete Schnittstelle ListIterator<E> bietet zusätzliche Methoden zum Verändern einer Liste.

MainClass.java
public class MainClass {

public static void main(String[] args) {

List<String> names = List.of("Hans", "Peter", "Lisa");

Iterator<String> iterator = names.iterator();
while (iterator.hasNext()) {
String name = iterator.next();
System.out.println(name);
}

}

}

Auch die bereits bekannte for-each-Schleife basiert auf Iteratoren. Die ausführliche Schreibeweise mit Iteratoren wird auch als erweiterte for-Schleife bezeichnet. Beim Kompilieren werden for-each-Schleifen um Iteratoren ergänzt.

MainClass.java
public class MainClass {

public static void main(String[] args) {

List<String> names = List.of("Hans", "Peter", "Lisa");

for (Iterator<String> iterator = names.iterator(); iterator.hasNext();) {
String name = iterator.next();
System.out.println(name);
}

/* Kurzschreibweise */
for (String name: names) {
System.out.println(name);
}

}

}