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