JavaIterator
Java Iterator
AnIterator is an object that can be used to loop throughcollections, likeArrayListandHashSet.
It is called an "iterator" because "iterating" is the technical term for looping.
To use an Iterator, you must import it from thejava.util package.
Getting an Iterator
Theiterator() method can be used to get anIterator for any collection:
Example
// Import the ArrayList class and the Iterator classimport java.util.ArrayList;import java.util.Iterator;public class Main { public static void main(String[] args) { // Make a collection ArrayList<String> cars = new ArrayList<String>(); cars.add("Volvo"); cars.add("BMW"); cars.add("Ford"); cars.add("Mazda"); // Get the iterator Iterator<String> it = cars.iterator(); // Print the first item System.out.println(it.next()); }}Looping Through a Collection
To loop through a collection, use thehasNext() andnext() methods of theIterator:
Removing Items from a Collection
Iterators are designed to easily change the collections that they loop through. Theremove() method can remove items from a collection while looping.
Example
Use an iterator to remove numbers less than 10 from a collection:
import java.util.ArrayList;import java.util.Iterator;public class Main { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList<Integer>(); numbers.add(12); numbers.add(8); numbers.add(2); numbers.add(23); Iterator<Integer> it = numbers.iterator(); while(it.hasNext()) { Integer i = it.next(); if(i < 10) { it.remove(); } } System.out.println(numbers); }}Note: Trying to remove items using afor loop or afor-each loop would not work correctlybecause the collection is changing size at the same time that the code is trying to loop.
The var Keyword with Iterators
You can also use thevar keyword with iterators. This avoids repeating the long type nameIterator<String>, since the compiler already knows the type from the collection.
This makes code shorter,but many developers still use the full type for clarity. Sincevar is valid from Java version 10, you may see it in other code, so it's good to know that it exists:
Example
// Without varIterator<String> it = cars.iterator();// With varvar it = cars.iterator();Here,var makes the iterator declaration shorter, but the actual type is stillIterator<String>.
Complete Iterator Reference
For a complete reference of Iterator methods, go to ourJava Iterator Reference.

