Different Ways to Iterate over a Map in Java

🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.

▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube

▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube

Java provides several ways to iterate over a Map. Each method has its own use cases, advantages, and trade-offs. This guide will cover the most common methods to iterate over a Map in Java, including detailed explanations, code examples, and outputs.

Table of Contents

  1. Introduction
  2. Using entrySet with For-Loop
  3. Using keySet with For-Loop
  4. Using values with For-Loop
  5. Using Iterator
  6. Using forEach Method (Java 8)
  7. Using Stream API (Java 8)
  8. Conclusion

1. Introduction

A Map in Java is a collection that maps keys to values, providing efficient lookups. Common implementations include HashMap, LinkedHashMap, and TreeMap. Iterating over a Map can be done in several ways, each offering different benefits.

2. Using entrySet with For-Loop

The entrySet method returns a set view of the map's entries. This is the most common way to iterate over a map.

Example: Using entrySet with For-Loop

import java.util.HashMap;
import java.util.Map;

public class EntrySetExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Orange", 3);

        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

Output:

Apple: 1
Banana: 2
Orange: 3

3. Using keySet with For-Loop

The keySet method returns a set view of the map's keys.

Example: Using keySet with For-Loop

import java.util.HashMap;
import java.util.Map;

public class KeySetExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Orange", 3);

        for (String key : map.keySet()) {
            System.out.println(key + ": " + map.get(key));
        }
    }
}

Output:

Apple: 1
Banana: 2
Orange: 3

4. Using values with For-Loop

The values method returns a collection view of the map's values.

Example: Using values with For-Loop

import java.util.HashMap;
import java.util.Map;

public class ValuesExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Orange", 3);

        for (Integer value : map.values()) {
            System.out.println("Value: " + value);
        }
    }
}

Output:

Value: 1
Value: 2
Value: 3

5. Using Iterator

You can use an Iterator to iterate over the entries of a map. This is useful if you need to remove entries during iteration.

Example: Using Iterator

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class IteratorExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Orange", 3);

        Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Integer> entry = iterator.next();
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

Output:

Apple: 1
Banana: 2
Orange: 3

6. Using forEach Method (Java 8)

The forEach method is part of the Java 8 Stream API and provides a functional approach to iteration.

Example: Using forEach Method

import java.util.HashMap;
import java.util.Map;

public class ForEachMethodExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Orange", 3);

        map.forEach((key, value) -> System.out.println(key + ": " + value));
    }
}

Output:

Apple: 1
Banana: 2
Orange: 3

7. Using Stream API (Java 8)

The Stream API provides a powerful way to process sequences of elements, including iteration.

Example: Using Stream API

import java.util.HashMap;
import java.util.Map;

public class StreamAPIExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Orange", 3);

        map.entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()));
    }
}

Full Example Code

Here is the full example code that demonstrates all the methods for iterating over a Map in Java:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class MapIterationExamples {
    public static void main(String[] args) {
        // Create a map with some key-value pairs
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Orange", 3);

        // Using entrySet with For-Loop
        System.out.println("Using entrySet with For-Loop:");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }

        // Using keySet with For-Loop
        System.out.println("\nUsing keySet with For-Loop:");
        for (String key : map.keySet()) {
            System.out.println(key + ": " + map.get(key));
        }

        // Using values with For-Loop
        System.out.println("\nUsing values with For-Loop:");
        for (Integer value : map.values()) {
            System.out.println("Value: " + value);
        }

        // Using Iterator
        System.out.println("\nUsing Iterator:");
        Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Integer> entry = iterator.next();
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }

        // Using forEach Method (Java 8)
        System.out.println("\nUsing forEach Method (Java 8):");
        map.forEach((key, value) -> System.out.println(key + ": " + value));

        // Using Stream API (Java 8)
        System.out.println("\nUsing Stream API (Java 8):");
        map.entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()));
    }
}

Output:

Using entrySet with For-Loop:
Apple: 1
Banana: 2
Orange: 3

Using keySet with For-Loop:
Apple: 1
Banana: 2
Orange: 3

Using values with For-Loop:
Value: 1
Value: 2
Value: 3

Using Iterator:
Apple: 1
Banana: 2
Orange: 3

Using forEach Method (Java 8):
Apple: 1
Banana: 2
Orange: 3

Using Stream API (Java 8):
Apple: 1
Banana: 2
Orange: 3

Conclusion

In this guide, we covered various methods to iterate over a Map in Java. Each method has its own use cases and advantages:

  • entrySet with For-Loop: Ideal for iterating over both keys and values.
  • keySet with For-Loop: Best when only keys are needed.
  • values with For-Loop: Useful for processing only values.
  • Iterator: Provides flexibility to modify the map during iteration.
  • forEach Method (Java 8): Simplifies iteration with a functional approach.
  • Stream API (Java 8): Powerful for complex processing of elements.

Choose the method that best fits your needs and enhances the readability and functionality of your code.

My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare