In this tutorial, we will see the listIterator()
method of the ArrayList class in Java.
Introduction
ArrayList is a widely used class to store and retrieve data in a collection framework.
In previous articles, we have various methods to perform operations on the ArrayList.
A few methods of ArrayList class are add()
, addAll()
, remove()
, set()
, iterate()
, clear()
, contains()
, get()
, removeRange()
, retainAll()
, trimToSize()
, indexOf()
and lastIndexOf()
, removeIf()
, removeAll()
, isEmpty
and ensureCapacity()
method.
Today we will see the listIterator()
method. This method provides the fail-fast iterator over elements of the list.
There are two variations of the listIterator()
method.
listIterator()
listIterator(int index)
1. ArrayList listIterator()
method
The listIterator()
method returns a list iterator over the elements in this list (in proper sequence).
The returned list iterator is fail-fast. i.e When multiple threads try to update the list at a time, it will throw the ConcurrentModificationExaception
.
The method signature is as given below.
public ListIterator<E> listIterator()
This method do not accept any parameter.
It returns a ListIterator
object instance. It will be a fail-fast iterator.
Let’s see an example Java program for the listIterator()
method of the ArrayList.
import java.util.ArrayList;
import java.util.ListIterator;
/**
* An example Java program about the listIterator()
* method of the arrayList.
*
* @author coderolls.com
*/
public class ArrayListListIteratorExample {
public static void main(String[] args) {
ArrayList<String> states = new ArrayList<>();
// add state in the arraylist
states.add("California");
states.add("Texas");
states.add("Montana");
states.add("Arizona");
states.add("Florida");
states.add("Michigan");
states.add("New Jersey");
states.add("Washington");
states.add("Ohio");
ListIterator<String> itr = states.listIterator();
while(itr.hasNext()) {
String state = itr.next();
System.out.println("The state: "+ state);
}
}
}
Output:
The state: California
The state: Texas
The state: Montana
The state: Arizona
The state: Florida
The state: Michigan
The state: New Jersey
The state: Washington
The state: Ohio
2. ArrayList listIterator(int index)
method
This listIterator method returns a fail-fast ListIterator object instance over the elements of this arraylist (in proper sequence), starting from the position specified i.e. index
.
The specified index indicates the first element that would be returned by an initial call to next
. An initial call to previous
would return the element with the specified index minus one.
The method signature is given below.
public ListIterator<E> listIterator(int index)
This method accepts only one parameter i.e index
of type int
index
- index of the first element to be returned from the list iterator (by a call tonext
)
Let’s see an example Java program for the listIterator()
method of the ArrayList.
import java.util.ArrayList;
import java.util.ListIterator;
/**
* An example Java program about the listIterator()
* method of the ArrayList.
*
* @author coderolls.com
*/
public class ArrayListListIteratorExample2 {
public static void main(String[] args) {
ArrayList<String> states = new ArrayList<>();
//Add state in the ArrayList
states.add("California");
states.add("Texas");
states.add("Montana");
states.add("Arizona");
states.add("Florida");
states.add("Michigan");
states.add("New Jersey");
states.add("Washington");
states.add("Ohio");
//given index 3, the iterator start from the element with index 3
ListIterator<String> itr = states.listIterator(3);
while(itr.hasNext()) {
String state = itr.next();
System.out.println("The state: "+ state);
}
}
}
Output:
The state: Arizona
The state: Florida
The state: Michigan
The state: New Jersey
The state: Washington
The state: Ohio
Exception
If the entered index is not within the range of ArrayList, we will get IndexOutOfBoundsException
I have given a Java program below which shows the case of the
import java.util.ArrayList;
import java.util.ListIterator;
/**
* An example Java program about the listIterator()
* method of the arrayList.
*
* @author coderolls.com
*/
public class ArrayListListIteratorException {
public static void main(String[] args) {
ArrayList<String> states = new ArrayList<>();
//Add state in the ArrayList
states.add("California");
states.add("Texas");
states.add("Montana");
states.add("Arizona");
states.add("Florida");
states.add("Michigan");
states.add("New Jersey");
states.add("Washington");
states.add("Ohio");
//Given index 120, it will throw IndexOutOfBoundsException
ListIterator<String> itr = states.listIterator(120);
while(itr.hasNext()) {
String state = itr.next();
System.out.println("The state :"+ state);
}
}
}
Output:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 120
at java.util.ArrayList.listIterator(ArrayList.java:816)
at com.gaurav.ExProject.ArrayList.ArrayListListIteratorException.main(ArrayListListIteratorException.java:27)
Conclusion
We have seen a listIterator()
method of the ArrayList class. This method returns an iterator over the elements of the ArrayList in proper sequence.
public ListIterator<E> listIterator()
The overloaded version of this method listIterator(int index)
returns the iterator over elements of the ArrayList, starting from the position specified. i.e index
Both method returns the fail-fast iterator.
public ListIterator<E> listIterator(int index)
The example Java program used in the above article can be found at this GitHub repository.
Please write your thoughts in the comment section below.