Skip to main content
Documents
Share
LinkedIn
Facebook
Twitter
Copy
Java keywordsIntroduction To JavaJava File HandlingJava Language BasicsJava ArraysJava Object-Oriented Programming

Java Iterator

The Iterator in Java is an interface that provides a way to traverse through a collection of objects, such as lists or sets, one element at a time. It is part of the Java Collections Framework and is found in the java.util package. The Iterator interface is used to access elements of a collection sequentially without exposing the underlying structure of the collection.

Key Methods

The Iterator interface provides three primary methods:

  • hasNext(): Returns true if the iteration has more elements. It allows checking if there are more elements to iterate over.
    boolean hasNext();
  • next(): Returns the next element in the iteration. It should be called after hasNext() to ensure that there is a next element.
    E next();
  • remove(): Removes the last element returned by the next() method from the underlying collection. This method is optional and may throw UnsupportedOperationException if the collection does not support removal.
    void remove();

Examples

Example 1: Basic Usage with List

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

public class IteratorExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String fruit = iterator.next();
            System.out.println(fruit);
        }
    }
}

In this example, an ArrayList of strings is created and populated with fruit names. An Iterator is obtained from the list to traverse and print each fruit.

Example 2: Removing Elements

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

public class RemoveExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String fruit = iterator.next();
            if ("Banana".equals(fruit)) {
                iterator.remove();
            }
        }
        System.out.println(list);
    }
}

This example demonstrates removing elements from a list using an Iterator. The element "Banana" is removed during the iteration.

Tips and Best Practices

  • Use hasNext() Before next(): Always check hasNext() before calling next() to avoid NoSuchElementException.
  • Avoid ConcurrentModificationException: Do not modify the collection directly while iterating over it. Use the remove() method of the Iterator to safely remove elements.
  • Use Enhanced For-Loop When Possible: For simple iterations where removal is not needed, Java's enhanced for-loop (for-each) can be more concise and readable.
  • Understand Unsupported Operations: Not all collections support the remove() operation. Be aware of the collection's capabilities to avoid UnsupportedOperationException.
  • Consider Alternatives: For more complex iteration needs, consider using ListIterator, which provides additional capabilities like bidirectional iteration and element modification.