Skip to main content
Documents
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.

Learn Java Essentials

Build your Java skills from the ground up and master programming concepts.
Start Learning Java for Free