Different Ways to Iterate over a Map in Java

📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.

🎓 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 (176K+ 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.

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