Skip to main content

A Guide to Iterator in Java | hasNext(), next(), remove(), forEachRemaining() Methods

A Guide to Iterator in Java | hasNext(), next(), remove(), forEachRemaining() Methods

What is Iterator in Java?

Java Iterator is an Interface that is used to iterate over a collection of java object one by one. 

When we want to access collection elements, add/remove or process the elements. In order to do all this processing through a Java program, we should be able to traverse through the collection that we are using. This is where the iterator is used.

Java Iterator is a collection framework interface and it is part of the java.util package.

In order to use an Iterator, we need to get the iterator object using the iterator() method of the collection interface.

Java Iterator supports only Forward Direction Iteration. So it is also know as Uni-Directional Cursor. 

Java Iterator consists 4 methods :

  1. hasNext()
  2. next()
  3. remove()
  4. forEachRemaining()

Syntax :

List<String> list = new ArrayList<>();
Iterator<String> iterator = list.iterator();

1. hasNext() Method in Iterator

The hasNext() method is used for checking if there's at least one element left to iterate over. 

hasNext() return boolean value based on next element is available or not.

Returns true if the iteration has more elements otherwise false.

2. next() Method in Iterator

The next() method is used for jump on next element and getting from collection. 

If hasNext() method return false then there is no need to call next() method.

It is good practice to use hasNext() before calling next().

Lets see example of hasNext() and next() method.

Example 1 : Iterator hasNext() and next() method demo

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IterationDemo {

    public static void main(String[] args) {
        
        List<String> list = new ArrayList<>() {{
            add("Java");
            add("Python");
            add("JavaScript");
            add("CSharp");
            add("PHP");
        }};

        Iterator<String> iterator = list.iterator();
        
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

Output :

Java
Python
JavaScript
CSharp
PHP

3. remove() method in Iterator

If we want to remove current element from collection remove() method is used.

Example 2 : remove() method in Iterator

import java.util.ArrayList;
import java.util.Iterator;

public class IterationDemo {

    public static void main(String[] args) {
       
        ArrayList<String> list = new ArrayList<String>();
        list.add("Java");
        list.add("Python");
        list.add("JavaScript");
        list.add("CSharp");
        list.add("PHP");
       
        Iterator<String> iterator = list.iterator();
       
        while (iterator.hasNext()) {
            String str = iterator.next();
            System.out.println(str);
            if (str.equals("PHP")) {
                iterator.remove();
            }
        }

       
        System.out.println();
       
        for (Iterator<String> iterator2 = list.iterator(); iterator2.hasNext();) {
            System.out.println(iterator2.next());
        }

    }
}

Output :

Java
Python
JavaScript
CSharp
PHP

Java
Python
JavaScript
CSharp

4. forEachRemaining() method in Iterator

forEachRemaining() method introduced in Java 8. We can iterate over collection using forEachRemaining() method. 

In above example we used while loop to iterate over collection until last element, now we can use forEachRemaining() method. It is mainly introduced for writing more clear and readable code.

forEachRemaining() method does not return anything. It only performs the given action for each remaining element. 

Lets see example.

Example 3 : forEachRemaining() method in Iterator example

import java.util.ArrayList;
import java.util.Iterator;

public class IterationDemo {

    public static void main(String[] args) {
       
        ArrayList<String> list = new ArrayList<String>();
        list.add("Java");
        list.add("Python");
        list.add("JavaScript");
        list.add("CSharp");
        list.add("PHP");
       
        Iterator<String> iterator = list.iterator();
       
        iterator.forEachRemaining( (language)
                    -> System.out.println(language) );

       
    }
}

Output :

Java
Python
JavaScript
CSharp
PHP


Comments

Popular posts from this blog

Queen's Attack II HackerRank Solution in Java with Explanation

Queen's Attack II Problem's Solution in Java (Chessboard Problem)   Problem Description : You will be given a square chess board with one queen and a number of obstacles placed on it. Determine how many squares the queen can attack.  A queen is standing on an n * n chessboard. The chess board's rows are numbered from 1 to n, going from bottom to top. Its columns are numbered from 1 to n, going from left to right. Each square is referenced by a tuple, (r, c), describing the row r and column c, where the square is located. The queen is standing at position (r_q, c_q). In a single move, queen can attack any square in any of the eight directions The queen can move: Horizontally (left, right) Vertically (up, down) Diagonally (four directions: up-left, up-right, down-left, down-right) The queen can move any number of squares in any of these directions, but it cannot move through obstacles. Input Format : n : The size of the chessboard ( n x n ). k : The number of obstacles...

Java Hashset HackerRank Solution | Programming Blog

Java Hashset HackerRank Solution with Explanation   Problem Statement :- In computer science, a set is an abstract data type that can store certain values, without any particular order, and no repeated values. {1,2,3} is an example of a set, but {1,2,2} is not a set. Today you will learn how to use sets in java by solving this problem. You are given n pairs of strings. Two pairs (a,b) and (c,d) are identical if a = c and b = d. That also implies (a,b) is not same as (b,a). After taking each pair as input, you need to print number of unique pairs you currently have. See full problem description in HackerRank Website :- https://www.hackerrank.com/challenges/java-hashset/problem Let's see solution of problem. import java.util.HashSet; import java.util.Scanner; public class Solution {     public static void main(String[] args) {         Scanner s = new Scanner(System.in);         System.out.println("Enter tot...