Mal sehen, wie man eine iterative Liste mit einer einfachen Liste schreibt. Dieses Mal verwenden wir die folgende Liste von Zeichenfolgen.
list
final List<String> months =
Arrays.asList("January", "February", "March", "April", "May", "June", "July", "Augast", "September", "October", "November", "December");
Ich möchte nur, dass diese Elemente nacheinander als Standardausgabe ausgegeben werden.
Verwenden wir zunächst die for-Schleife. Die for-Schleife ist ein zwingender Stil und ein externer Iterator. Im Unterrichtsstil muss ein Großteil des "Wie" der Arbeit vom Programmierer berücksichtigt werden.
Ich denke nicht, dass es besonders schwierig ist. Ausgaben in der Reihenfolge vom ersten Element. Sie müssen den Index angeben, indem Sie ihn einzeln erhöhen.
for-with-index
for (int i = 0; i < months.size(); i++) {
System.out.println(months.get(i));
}
Wenn Sie keinen Index benötigen, bietet Java eine erweiterte Steuerungssyntax als eine einfache for-Schleife. Hinter den Kulissen wird die Iterator-Schnittstelle angewendet und die Methoden hasNext () und next () aufgerufen. Daher muss der Programmierer das Ende der Schleife nicht anhand der Größe der Liste angeben.
for-without-index
for (final String month : months) {
System.out.println(month);
}
Java8 hat der Iterable-Schnittstelle eine forEach-Methode hinzugefügt. Es ist ein funktionaler Stil und ein interner Iterator. Der funktionale Stil erleichtert es, sich darauf zu konzentrieren, was zu tun ist.
foreach-comsumer
months.forEach(new Consumer<String>() {
public void accept(final String month) {
System.out.println(month);
}
});
foreach-lambda
months.forEach((final String month) -> System.out.println(month));
Da der Java-Compiler eine Typinferenz durchführen kann, kann dies wie folgt weggelassen werden. In diesem Fall fehlt jedoch das Finale und es ist kein unveränderliches Argument mehr.
foreach-lambda
months.forEach(month -> System.out.println(month));
Die Methodenreferenz ist eine Funktion aus Java8, und der Klassenname :: Methodenname ist die Grundform. Da die bereits definierte Methode ohne Angabe des Arguments ausgeführt werden kann, wird sie weiter weggelassen.
foreach-method-reference
months.forEach(System.out::println);