Класс Iterator
Класс Iterator представляет собой интерфейс из пакета
java.util, который позволяет последовательно обходить
элементы коллекции. Он приходит на смену устаревшему классу
Enumeration и является основой для циклов
for-each. Основные методы: hasNext проверяет,
есть ли следующий элемент, next возвращает
текущий элемент и сдвигает курсор вперед, remove
удаляет последний возвращенный элемент, а
forEachRemaining применяет действие к каждому
оставшемуся элементу. Получить итератор можно с помощью
метода iterator у любой коллекции.
Синтаксис
Iterator<Type> iterator = collection.iterator();
iterator.hasNext();
iterator.next();
iterator.remove();
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> iterator = list.iterator();
while (iterator.hasNext()) {
String elem = iterator.next();
System.out.println(elem);
}
}
}
Результат выполнения кода:
"a"
"b"
"c"
"d"
"e"
Пример
Давайте удалим элементы из списка во время
перебора с помощью метода remove:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = new ArrayList<>(List.of(1, 2, 3, 4, 5));
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
Integer elem = iterator.next();
if (elem % 2 == 0) {
iterator.remove();
}
}
System.out.println(list);
}
}
Результат выполнения кода:
[1, 3, 5]
Пример
Давайте применим действие к каждому оставшемуся
элементу с помощью метода forEachRemaining:
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> iterator = list.iterator();
iterator.next();
iterator.forEachRemaining(elem -> System.out.println(elem));
}
}
Результат выполнения кода:
"b"
"c"
"d"
"e"
Смотрите также
-
интерфейс
Iterable,
который предоставляет итератор -
метод
hasNext,
который проверяет наличие следующего элемента -
метод
next,
который возвращает следующий элемент -
интерфейс
ListIterator,
который позволяет перебирать список в обоих направлениях