Метод forEachRemaining
Метод forEachRemaining класса Iterator выполняет
заданное действие для каждого оставшегося элемента итератора.
В первый параметр мы передаем функциональный интерфейс
Consumer, который принимает один элемент и выполняет
над ним нужные действия. После вызова метода итератор
полностью опустошается - все элементы считаются
пройденными, и hasNext начнет возвращать false.
Синтаксис
iterator.forEachRemaining(action)
Пример
Давайте переберем все оставшиеся элементы итератора и выведем каждый из них в консоль:
import java.util.Iterator;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<String> list = List.of("a", "b", "c", "d", "e");
Iterator<String> iter = list.iterator();
iter.forEachRemaining(System.out::println);
}
}
Результат выполнения кода:
"a"
"b"
"c"
"d"
"e"
Пример
Давайте сначала пропустим первый элемент через next,
а затем вызовем forEachRemaining для обработки
только оставшихся элементов:
import java.util.Iterator;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = List.of(1, 2, 3, 4, 5);
Iterator<Integer> iter = list.iterator();
System.out.println("Skipped: " + iter.next());
iter.forEachRemaining(n -> System.out.println("Remaining: " + n));
}
}
Результат выполнения кода:
"Skipped: 1"
"Remaining: 2"
"Remaining: 3"
"Remaining: 4"
"Remaining: 5"
Пример
Давайте соберем оставшиеся элементы итератора в новый список, используя лямбда-выражение:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<String> list = List.of("a", "b", "c", "d", "e");
Iterator<String> iter = list.iterator();
List<String> res = new ArrayList<>();
iter.forEachRemaining(res::add);
System.out.println(res);
}
}
Результат выполнения кода:
[a, b, c, d, e]