Core Java

Exploring Different Techniques to Iterate a List of Maps in Java

In Java, iterating through a list of maps is a common operation with several techniques available, each offering distinct advantages. This article explores some of the most common methods, providing a look at their implementation.

1. Nested Loops with entrySet()

This approach uses nested loops to iterate through the list of maps and then through each map’s key-value pairs using the entrySet() method.

public class EnhancedForLoopExample {

    public static void main(String[] args) {
       // Create a list of maps
        List<Map<String, String>> listOfMaps = new ArrayList<>();

        // Populate the list with maps
        Map<String, String> map1 = new HashMap<>();
        map1.put("Name", "Alice");
        map1.put("City", "Wonderland");
        listOfMaps.add(map1);

        Map<String, String> map2 = new HashMap<>();
        map2.put("Name", "Bob");
        map2.put("City", "Builderland");
        listOfMaps.add(map2);
        
        Map<String, String> map3 = new HashMap<>();
        map3.put("Name", "Tom");
        map3.put("City", "Netherland");
        listOfMaps.add(map3);

        // Iterate through the list of maps
        for (Map<String, String> map : listOfMaps) {
            for (Map.Entry<String, String> entry : map.entrySet()) {
                System.out.println(entry.getKey() + ": " + entry.getValue());
            }
            System.out.println();
        }
    }
}

In this example, The outer loop iterates through each Map in the list (listOfMaps). The inner loop iterates through the entrySet() of the current Map.

entrySet() returns a set of key-value pairs represented by Map.Entry objects. We access the key and value using entry.getKey() and entry.getValue() respectively.

2. Nested Loops with keySet() and get()

Another approach involves using nested loops with keySet() and get(). In this method, we iterate through the keys of each map and use get() to retrieve the corresponding values.

        for (Map<String, String> map : listOfMaps) {
            for (String key : map.keySet()) {
                String value = map.get(key);
                System.out.format("%s: %s\n", key, value);
            }
        }

Similar to the previous approach, the outer loop iterates through the list of maps. The inner loop iterates through the keySet() method of the current map.

keySet() returns a set of all keys in the map. We use get(key) to retrieve the value associated with the current key.

3. Java 8 Streams with flatMap()

Java 8 Streams enable us to iterate through collections in a more declarative manner.

        // Iterate through the list of maps using Streams API
        listOfMaps.stream()
                .flatMap(map -> map.entrySet().stream())
                .forEach(entry -> System.out.println(entry.getKey() + ": " + entry.getValue()));

In this approach, we start by converting the list to a stream using stream().

flatMap() transforms each map into a stream of its key-value pairs using entrySet().stream(). The resulting stream is then processed using forEach().

Inside a lambda, we access the key and value from each Map.Entry.

Output is:

City: Wonderland
Name: Alice
City: Builderland
Name: Bob
City: Netherland
Name: Tom      

4. Using forEach Method with Lambda Expressions

Java 8 also introduced the forEach method, which can be used with lambda expressions to iterate over collections.

        // Iterate through the list of maps using forEach method
        listOfMaps.forEach(map -> {
            map.forEach((key, value) -> {
                System.out.println(key + ": " + value);
            });
            System.out.println();
        });

This block of code uses Java 8’s forEach method to iterate through a list of maps. The outer forEach method iterates over each map in the listOfMaps. For each map, the inner forEach method iterates through its key-value pairs.

The output is:

Fig 1: Output of iterating a list of maps in Java using the forEach method with Lambda

5. Conclusion

In this article, we explored various techniques to iterate through a list of maps in Java. We covered the use of nested loops as well as the Streams API and forEach method for more modern, functional programming styles introduced in Java 8. Each method has its own advantages, and the choice of which to use depends on the specific requirements and the version of Java you are working with.

6. Download the Source Code

This article was about how to iterate through a list of map in Java.

Download
You can download the full source code of this example here: Java iterate Map List

Omozegie Aziegbe

Omos holds a Master degree in Information Engineering with Network Management from the Robert Gordon University, Aberdeen. Omos is currently a freelance web/application developer who is currently focused on developing Java enterprise applications with the Jakarta EE framework.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
Back to top button