English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массивы

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Списки (List)

Java Queue (очередь)

Java Map-сборники

Java Set-сборники

Java Ввод/вывод (I/O)

Java Reader/Writer

Другие темы Java

Java ListIterator интерфейс

В данном руководстве мы будем изучать интерфейс Java ListIterator с помощью примеров.

Интерфейс ListIterator в рамке Java Collections Framework предоставляет функциональность для доступа к элементам списка.

Он двунаправленный. Это означает, что он позволяет нам итерировать элементы списка в двух направлениях.

Он наследует интерфейс Iterator.

Интерфейс List предоставляет метод ListIterator(), который возвращает экземпляр интерфейса ListIterator.

Методы ListIterator

Интерфейс ListIterator предоставляет методы, которые можно использовать для выполнения различных операций с элементами списка.

  • hasNext() - Возвращает true, если в списке есть элементы

  • next() - Возвращает следующий элемент списка

  • nextIndex() - Возвращает индекс элемента, который будет возвращен методом next()

  • previous() - Возвращает предыдущий элемент списка

  • previousIndex() - Возвращает индекс элемента, который будет возвращен методом previous()

  • remove() - Удалить элемент, возвращаемый next() или previous()

  • set() - Заменить элемент, возвращаемый next() или previous(), на указанный элемент

Пример 1: Реализация ListIterator

В следующем примере мы реализовали методы next(), nextIndex() и hasNext() интерфейса ListIterator в списке массивов.

import java.util.ArrayList;
import java.util.ListIterator;
class Main {
    public static void main(String[] args) {
        // Создание ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(3);
        numbers.add(2);
        System.out.println("ArrayList: " + numbers);
        // Создание экземпляра ListIterator
        ListIterator<Integer> iterate = numbers.listIterator();
        // Использование метода next()
        int number1 = iterate.next();
        System.out.println("Следующий элемент: " + number1);
        // Использование nextIndex()
        int index1 = iterate.nextIndex();
        System.out.println("Позиция следующего элемента: " + index1);
        // Использование метода hasNext()
        System.out.println("Есть ли следующий элемент? " + iterate.hasNext());
    }
}

Результат вывода

ArrayList: [1, 3, 2]
Следующий элемент: 1
Позиция следующего элемента: 1
Есть ли следующий элемент? true

Пример 2: Реализация ListIterator

В следующем примере мы реализовали методы previous() и previousIndex() интерфейса ListIterator в списке массивов.

import java.util.ArrayList;
import java.util.ListIterator;
class Main {
    public static void main(String[] args) {
        // Создание ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(3);
        numbers.add(2);
        System.out.println("ArrayList: " + numbers);
        // Создание экземпляра ListIterator
        ListIterator<Integer> iterate = numbers.listIterator();
        iterate.next();
        iterate.next();
        // Использование метода previous ()
        int number1 = iterate.previous();
        System.out.println("Предыдущий элемент: " + number1);
        // Использование previousIndex ()
        int index1 = iterate.previousIndex();
        System.out.println("Позиция предыдущего элемента: " + index1);
    }
}

Результат вывода

ArrayList: [1, 3, 2]
Предыдущий элемент: 3
Позиция предыдущего элемента: 0

В данном примере в начале экземпляр итератора находился перед 1. Поскольку перед 1 не было элементов, вызов метода previous() вызовет исключение.

Затем мы использовали метод next() 2 раза. Теперь экземпляр Iterator будет в диапазоне от 3 до 2.

Таким образом, метод previous() возвращает 3.