Like Iterator, ListIterator is a Java Iterator, which is used to iterate elements one-by-one from a List implemented object. Important details about ListIterator
- It extends Iterator interface.
- It is useful only for List implemented classes.
- Unlike Iterator, It supports all four operations: CRUD (CREATE, READ, UPDATE and DELETE).
- Unlike Iterator, It supports both Forward Direction and Backward Direction iterations.
- It is a Bi-directional Iterator.
- We can use list Iterator for all List implemented classes like ArrayList, CopyOnWriteArrayList, LinkedList, Stack, Vector etc.
ListIterator Methods
Java ListIterator interface has the following Methods.
- void add(E e): Inserts the specified element into the list.
- boolean hasNext(): Returns true if this list iterator has more elements when traversing the list in the forward direction.
- boolean hasPrevious(): Returns true if this list iterator has more elements when traversing the list in the reverse direction.
- E next(): Returns the next element in the list and advances the cursor position.
- int nextIndex(): Returns the index of the element that would be returned by a subsequent call to next().
- E previous(): Returns the previous element in the list and moves the cursor position backwards.
- int previousIndex(): Returns the index of the element that would be returned by a subsequent call to previous().
- void remove(): Removes from the list the last element that was returned by next() or previous().
- void set(E e): Replaces the last element returned by next() or previous() with the specified element.
Example
public class ListIteratorDemo { public static void main(String[] args) { List<String> names = new LinkedListt<>(); names.add("Rams"); names.add("Posa"); names.add("Chinni"); // Getting ListIterator ListIterator<String> listIterator = names.listIterator(); // Traversing elements in forward direction while(listIterator.hasNext()){ System.out.println(listIterator.next()); } // Traversing elements in backward direction while(listIterator.hasPrevious()){ System.out.println(listIterator.previous()); } } }