Интерфейс ListIterator

Интерфейс ListIterator расширяет интерфейс Iterator и используется для двустороннего обхода списка и видоизменения его элементов.

ListIterator можно получить вызывая метод listIterator() для коллекций, реализующих List.

Методы интерфейса ListIterator:

  • void add(Е obj) - вставляет obj перед элементом, который должен быть возвращен следующим вызовом next().
  • boolean hasNext() - возвращает true, если есть следующий элемент. В противном случае возвращает false.
  • boolean hasPrevious() - возвращает true, если есть предыдущий элемент. В противном случае возвращает false
  • Е next() - возвращает следующий элемент. Если следующего нет, инициируется исключение NoSuchElementException.
  • int nextIndex() - возвращает индекс следующего элемента. Если следующего нет, возвращается размер списка.
  • Е previous() - возвращает предыдущий элемент. Если предыдущего нет, инициируется исключение NoSuchElementException.
  • int previousIndex() - возвращает индекс предыдущего элемента. Если предыдущего нет, возвращается -1.
  • void remove() - удаляет текущий элемент из списка. Если remove() вызван до next() или previous(), инициируется исключение IllegalStateException.
  • void set(Е obj) - присваивает obj текущему элементу. Это элемент, возвращенный последним вызовом next() или previous().

Пример использования интерфейса ListIterator

import java.util.Arrays;
import java.util.List;
import java.util.ListIterator;

public class ListIteratorDemo {
    public static void main(String[] args) {
        List<String> arrayList = Arrays.asList("A", "B", "C", "D");

        ListIterator<String> listIterator = arrayList.listIterator();
        while (listIterator.hasNext()) {
            String element = listIterator.next();
            listIterator.set(element + "+");
        }

        System.out.print("Измененный arrayList в обратном порядке: ");
        while (listIterator.hasPrevious()) {
            String element = listIterator.previous();
            System.out.print(element + " ");
        }
    }
}
Read also:
Comments