Sentry Answers>Java>

How to Iterate Over a HashMap in Java

How to Iterate Over a HashMap in Java

Lewis D.

The ProblemJump To Solution

If you have a HashMap, what is the best way to iterate over all the elements in the Map?

The Solution

Java has a couple of solutions we can use to iterate over just the map keys, the values, or each key-value entry. In the approaches below, we will only consider iterating over map entries that will allow you to access both the map keys and map values during the iteration.

Using a For-Each Loop

Perhaps the most straightforward approach to iterating over a HashMap is to use a for-each loop to iterate over each entry. Using the HashMap.entrySet() will return a set view of the mappings or entries in the HashMap.

Click to Copy
import java.util.HashMap; import java.util.Map; public class Example { public static void main(String[] args) { Map<String, String> myMap = new HashMap<>() {{ put("a", "b"); put("c", "d"); }}; iterateUsingForEach(myMap); } public static void iterateUsingForEach(Map<String, String> map) { for (Map.Entry<String, String> entry : map.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); System.out.println("Key=" + key + ", Value=" + value); } } }

Using a While Loop and Iterator

This next approach uses the same for-each syntax as before, but this time we can make use of an Iterator. Since the HashMap.entrySet() method returns a Set, which extends the Collection interface, we can use the Iterator instance returned by Map.entrySet().iterator.

Click to Copy
public void iterateUsingForEachIterator(Map<String, String> map) { Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); String key = entry.getKey(); String value = entry.getValue(); System.out.println("Key=" + key + ", Value=" + value); } }

Using For-Each and Lambda

In this approach, we make use of lambda expressions, which have been available in Java since version 8. A lambda expression operates on input parameters and returns a value. The lambda expression solution to this problem does not need each key-value entry to be converted into an entry set.

Click to Copy
public void iterateUsingLambda(Map<String, String> map) { map.forEach((key, value) -> { System.out.println("Key=" + key + ", Value=" + value); }); }

Concluding Thoughts

In conclusion, we have looked at three approaches to iterating over a HashMap. Each approach is useful for retrieving both the map keys and the map values. We also looked at using lambdas, which use fewer lines of code to achieve the same iteration as non-lambda approaches.

  • Sentry BlogException Handling in Java (with Real Examples)
  • Syntax.fm logo
    Listen to the Syntax Podcast

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Loved by over 4 million developers and more than 100,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

© 2024 • Sentry is a registered Trademark
of Functional Software, Inc.