Java Iterator interface used to iterate over the elements in a collection (list, set or map). It helps to retrieve the specified collection elements one by one and perform operations over each element.

Iterator Methods

  • boolean hasNext():Returns true if the iteration has more elements.
  • E next(): Returns the next element in the iteration.
  • default void remove(): It removes from the underlying collection the last element returned by the iterator (optional operation). This method can be called only once per call to next(). If the underlying collection is modified while the iteration is in progress in any way other than by calling remove() method, iterator will throw an ConcurrentModificationException. Iterators that do this are known as fail-fast iterators, as they fail quickly and cleanly, rather that risking arbitrary, non-deterministic behaviour at an undetermined time in the future.
  • default void forEachRemaining(Consumer action): This method performs the given action for each remaining element until all elements have been processed or the action throws an exception. Actions are performed in the order of iteration, if that order is specified.

Example

/* ArrayList Example */
ArrayList<String> list = new ArrayList<>();
         
list.add("A");
list.add("B");
list.add("C");
list.add("D");
 
// Get iterator
Iterator<String> iterator = list.iterator();

// Print all the element of the list 
iterator.forEachRemaining(System.out::println);

// Iterate over all elements
while(iterator.hasNext())
{
    // Get current element
    String value = iterator.next();
     
    // Remove element
    if(value.equals("B")) {
        iterator.remove();
    }
}

/* HashMap Example */
HashMap<Integer, String> map = new HashMap<>();
         
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
map.put(4, "D");
 
// Get iterator for the keys
Iterator<String> iterator = map.keys().iterator();

// Get iterator for values
//Iterator<String> iterator = map.values().iterator();
 
// Iterate over all keys
while(iterator.hasNext())
{
    String key = iterator.next();
}