π Java Iterator Methods β Full Guide with Examples (2025)
π§² Introduction β Why Java Iterator Methods Matter
In Java, the Iterator is a fundamental interface used to traverse collections like ArrayList
, HashSet
, and more. When working with collections, especially during looping, removal, or conditional filtering, Iterator methods allow:
- β Safe traversal of elements
- β
Element removal without
ConcurrentModificationException
- β Compatibility with all Java Collections Framework classes
π All
Collection
types injava.util
package provide aniterator()
method.
π What Is a Java Iterator
?
An Iterator
is an object that enables sequential access to elements in a collection without exposing its structure.
import java.util.Iterator;
Iterator<Type> it = collection.iterator();
β
Commonly used with: List
, Set
, Queue
, etc.
π Core Java Iterator Methods
π§© Method | π Purpose |
---|---|
hasNext() | Checks if another element exists |
next() | Returns the next element |
remove() | Removes the last element returned by next() |
β οΈ Note:
remove()
can only be called once pernext()
, or it throwsIllegalStateException
.
β Java Iterator Method Examples
β
1. hasNext()
+ next()
β Traverse Elements
import java.util.*;
public class IteratorExample {
public static void main(String[] args) {
List<String> languages = Arrays.asList("Java", "Python", "C++");
Iterator<String> it = languages.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
Output:
Java
Python
C++
β Explanation:
hasNext()
checks for availabilitynext()
returns and moves to the next item
β
2. remove()
β Safe Removal While Iterating
List<Integer> numbers = new ArrayList<>(List.of(1, 2, 3, 4, 5));
Iterator<Integer> it = numbers.iterator();
while (it.hasNext()) {
if (it.next() % 2 == 0) {
it.remove();
}
}
System.out.println(numbers); // Output: [1, 3, 5]
β
Explanation: Removes even numbers safely while iterating.
β οΈ Don’t use list.remove(item)
inside a loop β it causes ConcurrentModificationException.
β 3. Enhanced For-Loop vs Iterator
for (String lang : languages) {
System.out.println(lang);
}
β Cleaner but read-only: Cannot safely remove items with enhanced for-loop.
π§ͺ Java ListIterator (Advanced)
If you need bidirectional traversal, use ListIterator
:
List<String> cities = new ArrayList<>(List.of("London", "Paris", "Tokyo"));
ListIterator<String> li = cities.listIterator();
while (li.hasNext()) {
System.out.println(li.next());
}
while (li.hasPrevious()) {
System.out.println(li.previous());
}
β ListIterator Methods:
π§© Method | π Purpose |
---|---|
hasPrevious() | Checks if a previous element exists |
previous() | Returns the previous element |
add(E) | Adds element at current cursor position |
set(E) | Replaces last element returned |
nextIndex() / previousIndex() | Get element indexes |
π Summary Table β Iterator vs ListIterator
π§ Feature | π Iterator | π ListIterator |
---|---|---|
Traverse Forward | β Yes | β Yes |
Traverse Backward | β No | β Yes |
Remove Element | β Yes | β Yes |
Add/Replace Element | β No | β Yes |
Works with All Collections | β Yes | β Only List types |
π‘ Best Practices with Iterators
- β
Use
iterator.remove()
for safe element deletion - β
Prefer enhanced
for-each
loop for read-only operations - β οΈ Avoid calling
remove()
without callingnext()
first - β
Use
ListIterator
only when modification or reverse traversal is needed
βFAQs on Java Iterator Methods
β Can I use Iterator
with HashMap
?
Yes. Use it on entrySet()
or keySet()
:
Iterator<Map.Entry<String, Integer>> it = map.entrySet().iterator();
β What happens if I call next()
when no element exists?
It throws a NoSuchElementException
.
β Can I use remove()
twice in a row?
No. You must call next()
before each remove()
.
β Whatβs the difference between Iterator
and Enumeration
?
Iterator
is more modern and supports removal.Enumeration
is read-only and legacy (used in old APIs like Vector
).
β Is Iterator
thread-safe?
No. Use ConcurrentHashMap
or synchronized wrappers for thread safety.
Share Now :