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

Sales by Match HackerRank Solution | Java Solution

HackerRank Sales by Match problem solution in Java   Problem Description : Alex works at a clothing store. There is a large pile of socks that must be paired by color for sale. Given an array of integers representing the color of each sock, determine how many pairs of socks with matching colors there are. For example, there are n=7 socks with colors socks = [1,2,1,2,1,3,2]. There is one pair of color 1 and one of color 2 . There are three odd socks left, one of each color. The number of pairs is 2 .   Example 1 : Input : n = 6 arr = [1, 2, 3, 4, 5, 6] Output : 0 Explanation : We have 6 socks with all different colors, So print 0. Example 2 : Input : n = 10 arr = [1, 2, 3, 4, 1, 4, 2, 7, 9, 9] Output : 4 Explanation : We have 10 socks. There is pair of color 1, 2, 4 and 9, So print 4. This problem easily solved by HashMap . Store all pair of socks one by one in Map and check if any pair is present in Map or not. If pair is present then increment ans variable by 1 ...

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...