In Java 8 ist in der Schnittstelle Iterator eine neue Default-Methode forEachRemaining(Consumer<? super E> action) eingezogen, die ein beliebiges Stückchen Code – transportiert über einen Consumer – auf jedem Element ausführt. Die Default-Methode ist ein Zweizeiler:
java.util.Iterator.java, forEachRemaining()
default void forEachRemaining( Consumer<? super E> action ) {
Objects.requireNonNull( action );
while ( hasNext() )
action.accept( next() );
}
Mit Hilfe dieser Methode lässt sich eine externe Iteration über eine selbstgebaute Schleife in eine interne Iteration umbauen und Lambda-Ausdrücke machen die Implementierung der Schnittstelle kurz.
Beispiel: Gib jedes Argument der Konsoleneingabe aus:
new Scanner( System.in ).forEachRemaining( System.out::println );
interface java.util.Iterator<E>
- default void forEachRemaining(Consumer<? super E> action)
Führt action auf jedem kommenden Element des Iterators bis zum letzten Element aus.