Урок 16

Интерфейс 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().

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

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class ListIteratorDemo {
    public static void main(String[] args) {
        // Create an array list.
        List<String> arrayList = new ArrayList<>();

        // Add elements to the array list.
        arrayList.add("C");
        arrayList.add("A");
        arrayList.add("E");
        arrayList.add("B");
        arrayList.add("D");
        arrayList.add("F");

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

        // Now, display the list backwards.
        System.out.print("Modified list backwards: ");
        while (listIterator.hasPrevious()) {
            String element = listIterator.previous();
            System.out.print(element + " ");
        }
    }
}


0 comments
Leave your comment: