Of course! Let's break down the Iterator in Java, focusing on the variable name it, which is a very common and recommended convention.

What is an Iterator?
An Iterator is an object that lets you traverse through a collection (like a List, Set, or Map) and access its elements one by one. It's a fundamental concept in Java for safely looping over collections.
Think of it like a bookmark in a book:
- The collection is the book.
- The
Iteratoris the bookmark. - You can move the bookmark (
next()) forward, check if you've reached the end (hasNext()), and remove the page where the bookmark is (remove()).
Key Methods of the Iterator Interface
The java.util.Iterator interface has three core methods:
-
boolean hasNext()
(图片来源网络,侵删)- Purpose: Checks if there are more elements to iterate over.
- Returns:
trueif the iteration has more elements,falseotherwise. - Analogy: "Is there another page in the book after my current bookmark?"
-
E next()- Purpose: Returns the next element in the iteration and moves the iterator's position forward.
- Returns: The next element in the collection.
- Throws:
NoSuchElementExceptionif there are no more elements. - Analogy: "Tell me what's on the next page and move my bookmark there."
-
default void remove()- Purpose: Removes the last element that was returned by the
next()method from the underlying collection. - Important: You can only call
remove()after a call tonext(). Calling it beforenext()or calling it twice in a row will throw anIllegalStateException. - Analogy: "Remove the page I just read."
- Note: The
remove()method is optional. Some iterators (like those for read-only collections) will throw anUnsupportedOperationExceptionif you call it.
- Purpose: Removes the last element that was returned by the
The Variable Name it
In Java, it is a widely adopted and highly recommended convention for naming an Iterator variable. It's short, clear, and instantly recognizable to other Java developers as an iterator.
Why use it?

- Clarity:
for (Iterator<String> it = list.iterator(); it.hasNext(); )is immediately understood. - Conciseness: It's shorter than
iterator,itr, ormyIterator. - Common Practice: It's used in many official Java examples and is a standard in the community.
How to Use an Iterator (with it)
Here are the most common ways to use an Iterator, all of which use the it convention.
The Classic while Loop (The Manual Way)
This is the most fundamental way to use an Iterator. It gives you full control and is useful when you need to perform complex logic inside the loop.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorExample {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
fruits.add("Date");
// Get an iterator for the list and name it 'it'
Iterator<String> it = fruits.iterator();
System.out.println("--- Iterating with while loop ---");
// Loop as long as there are more elements
while (it.hasNext()) {
// Get the next element
String fruit = it.next();
System.out.println("Found fruit: " + fruit);
// Optional: Remove an element during iteration
if ("Banana".equals(fruit)) {
System.out.println("Removing Banana...");
it.remove(); // Removes the last element returned by next()
}
}
System.out.println("\nList after removal: " + fruits);
}
}
Output:
--- Iterating with while loop ---
Found fruit: Apple
Found fruit: Banana
Removing Banana...
Found fruit: Cherry
Found fruit: Date
List after removal: [Apple, Cherry, Date]
The Enhanced for Loop (The Recommended Way)
For simple iteration where you don't need to call remove() or inspect the Iterator object itself, the enhanced for loop (also called a for-each loop) is more concise and less error-prone. Under the hood, the compiler uses an Iterator for you!
import java.util.ArrayList;
import java.util.List;
public class EnhancedForLoop {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println("--- Iterating with enhanced for loop ---");
// The compiler automatically creates an Iterator named 'it' behind the scenes
for (String fruit : fruits) {
System.out.println("Found fruit: " + fruit);
// NOTE: You cannot use fruit.remove() here. This will cause a
// ConcurrentModificationException if you try to modify the list.
}
}
}
Key Difference: The enhanced for loop is read-only. If you try to modify the collection inside the loop, you will get a ConcurrentModificationException. The manual while loop with it.remove() is the safe way to remove elements during iteration.
Iterator vs. ListIterator
It's important to know that ListIterator is a more powerful sub-interface of Iterator that is only available for lists (List).
| Feature | Iterator |
ListIterator |
|---|---|---|
| Applicability | Works on all Collections (e.g., List, Set). |
Works only on Lists. |
| Direction | Forward only. | Forward and backward (hasPrevious(), previous()). |
| Index Access | No. | Yes (nextIndex(), previousIndex()). |
| Modification | remove() (removes last element). |
add(E e), set(E e), and remove(). |
import java.util.ArrayList;
import java.util.ListIterator;
public class ListIteratorExample {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
ListIterator<String> lit = names.listIterator();
System.out.println("--- Forward Iteration ---");
while (lit.hasNext()) {
System.out.println(lit.next());
}
System.out.println("\n--- Backward Iteration ---");
while (lit.hasPrevious()) {
System.out.println(lit.previous());
}
}
}
Summary
| Concept | Description |
|---|---|
Iterator |
An object to traverse a collection. |
it |
The conventional, recommended name for an Iterator variable. |
hasNext() |
Checks if more elements exist. |
next() |
Gets the next element and advances the iterator. |
remove() |
Safely removes the last element returned by next(). |
Enhanced for loop |
A simpler, read-only way to iterate that uses an Iterator internally. |
ListIterator |
A more powerful Iterator for Lists that allows bidirectional traversal and modification. |
