Освоение интерфейса ListIterator в Java: практическое руководство
Интерфейс ListIterator в Java
Интерфейс ListIterator расширяет Iterator и обеспечивает двунаправленный обход, позволяя двигаться вперёд и назад по List с одновременной модификацией.
Ключевые возможности: навигация, удаление и замена элементов — делают его незаменимым инструментом для работы со списками.
Основные методы ListIterator
hasNext()— возвращаетtrue, если есть следующий элемент.next()— переходит к и возвращает следующий элемент.nextIndex()— возвращает индекс элемента, который вернётnext().previous()— переходит назад и возвращает предыдущий элемент.previousIndex()— возвращает индекс элемента, который вернётprevious().remove()— удаляет последний элемент, возвращённыйnext()илиprevious().set(E e)— заменяет последний возвращённый элемент на указанное значение.
Пример 1: Навигация вперёд
Пример демонстрации next(), nextIndex() и hasNext() на ArrayList:
import java.util.ArrayList;
import java.util.ListIterator;
class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
ListIterator<Integer> iterator = numbers.listIterator();
int first = iterator.next();
System.out.println("Следующий элемент: " + first);
int nextIndex = iterator.nextIndex();
System.out.println("Позиция следующего элемента: " + nextIndex);
System.out.println("Есть ли следующий элемент? " + iterator.hasNext());
}
}
Вывод
ArrayList: [1, 3, 2] Следующий элемент: 1 Позиция следующего элемента: 1 Есть ли следующий элемент? true
Пример 2: Навигация назад
Пример демонстрации previous() и previousIndex() после двух вызовов next():
import java.util.ArrayList;
import java.util.ListIterator;
class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
ListIterator<Integer> iterator = numbers.listIterator();
iterator.next();
iterator.next();
int prev = iterator.previous();
System.out.println("Предыдущий элемент: " + prev);
int prevIndex = iterator.previousIndex();
System.out.println("Позиция предыдущего элемента: " + prevIndex);
}
}
Вывод
ArrayList: [1, 3, 2] Предыдущий элемент: 3 Позиция предыдущего элемента: 0
Изначально итератор находится перед первым элементом, поэтому вызов previous() выбросил бы исключение. После двух вызовов next() итератор находится между 3 и 2, поэтому previous() возвращает 3.
java
- Освоение интерфейсов в C#: определение, реализация и практические примеры
- Освоение операторов Java: типы, синтаксис и практические примеры
- Комментарии в Java: типы, использование и лучшие практики
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Освоение интерфейса NavigableSet в Java: навигация, сортировка и практические примеры
- Освоение Java Lambda-выражений: от основ к Stream API
- Интерфейс vs Абстрактный класс в Java: Как выбрать правильную абстракцию
- Интерфейсы в Java: определение, использование и лучшие практики