The ListIterator interface of the Java collections framework provides the functionality to access elements of a list.
It is bidirectional. This means it allows us to iterate elements of a list in both the direction.
It extends the Iterator interface.

The List interface provides a listIterator() method that returns an instance of the ListIterator interface.
Methods of ListIterator
The ListIterator interface provides methods that can be used to perform various operations on the elements of a list.
hasNext()- returns true if there exists an element in the listnext()- returns the next element of the listnextIndex()returns the index of the element that thenext()method will returnprevious()- returns the previous element of the listpreviousIndex()- returns the index of the element that theprevious()method will returnremove()- removes the element returned by eithernext()orprevious()set()- replaces the element returned by eithernext()orprevious()with the specified element
Example 1: Implementation of ListIterator
In the example below, we have implemented the next(), nextIndex() and hasNext() methods of the ListIterator interface in an array list.
import java.util.ArrayList; import java.util.ListIterator; class Main { public static void main(String[] args) { // Creating an ArrayList ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(3); numbers.add(2); System.out.println("ArrayList: " + numbers); // Creating an instance of ListIterator ListIterator<Integer> iterate = numbers.listIterator(); // Using the next() method int number1 = iterate.next(); System.out.println("Next Element: " + number1); // Using the nextIndex() int index1 = iterate.nextIndex(); System.out.println("Position of Next Element: " + index1); // Using the hasNext() method System.out.println("Is there any next element? " + iterate.hasNext()); } } Output
ArrayList: [1, 3, 2] Next Element: 1 Position of Next Element: 1 Is there any next element? true
Example 2: Implementation of ListIterator
In the example below, we have implemented the previous() and previousIndex() methods of the ListIterator interface in an array list.
import java.util.ArrayList; import java.util.ListIterator; class Main { public static void main(String[] args) { // Creating an ArrayList ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(3); numbers.add(2); System.out.println("ArrayList: " + numbers); // Creating an instance of ListIterator ListIterator<Integer> iterate = numbers.listIterator(); iterate.next(); iterate.next(); // Using the previous() method int number1 = iterate.previous(); System.out.println("Previous Element: " + number1); // Using the previousIndex() int index1 = iterate.previousIndex(); System.out.println("Position of the Previous element: " + index1); } } Output
ArrayList: [1, 3, 2] Previous Element: 3 Position of the Previous Element: 0
In the above example, initially, the instance of the Iterator was before 1. Since there was no element before 1 so calling the previous() method will throw an exception.
We then used the next() methods 2 times. Now the Iterator instance will be between 3 and 2.
Hence, the previous() method returns 3.