WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Java Collections · Basic · question 8 of 100

What is the difference between an Iterator and a ListIterator in Java?

📕 Buy this interview preparation book: 100 Java Collections questions & answers — PDF + EPUB for $5

In Java, both Iterator and ListIterator are interfaces in the Java Collections Framework that allow you to iterate over the elements in a collection, but they have some key differences.

Type of collection: An Iterator can be used to iterate over any collection that implements the Iterable interface, such as a List, Set, or Map. A ListIterator, on the other hand, can only be used to iterate over a List.

Direction of iteration: An Iterator can only be used to iterate over a collection in a forward direction, from the beginning to the end of the collection. A ListIterator, on the other hand, can be used to iterate over a List in both forward and backward directions.

Access to list-specific methods: A ListIterator provides additional methods that are specific to Lists, such as "add", "set", and "previous".

Here’s an example of how to use an Iterator and a ListIterator in Java:

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

public class Example {
    public static void main(String[] args) {
        // create a list
        List<String> myList = new ArrayList<>();
        myList.add("apple");
        myList.add("banana");
        myList.add("orange");
        
        // use an iterator to iterate over the list
        Iterator<String> iterator = myList.iterator();
        while (iterator.hasNext()) {
          String element = iterator.next();
          System.out.println(element);
        }
        
        // use a list iterator to iterate over the list in reverse
        ListIterator<String> listIterator = myList.listIterator(myList.size());
        while (listIterator.hasPrevious()) {
          String element = listIterator.previous();
          System.out.println(element);
        }
    }
}

In this example, we create a List called "myList" using the ArrayList class, and add some strings to it using the "add" method. We then use an Iterator to iterate over the List in a forward direction, printing out each element using the "println" method. We then use a ListIterator to iterate over the List in a backward direction, printing out each element using the "println" method.

The output of this program would be:

apple
banana
orange
orange
banana
apple

As you can see, the Iterator is used to iterate over the List in a forward direction, while the ListIterator is used to iterate over the List in a backward direction.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Java Collections interview — then scores it.
📞 Practice Java Collections — free 15 min
📕 Buy this interview preparation book: 100 Java Collections questions & answers — PDF + EPUB for $5

All 100 Java Collections questions · All topics