Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE

1. Introduction

In Java programming, dealing with collections is a fundamental task. Lists and Maps are two commonly used collection types, and sometimes, we might need to work with a List of Maps. Whether we’re processing data, manipulating configurations, or any other task that involves complex data structures, efficiently iterating through a List of Maps is crucial.

In this tutorial, we’ll explore various techniques for iterating through a List of Maps in Java.

2. Understanding List of Maps

Before we explore iteration techniques, let’s grasp the concept of a List of Maps.

A List of Maps comprises multiple Map objects, each capable of holding key-value pairs where the keys remain unique within each Map. This structure offers remarkable versatility and finds common applications in representing tabular data, configurations, or any other data requiring key-to-value mappings.

Let’s consider a List of Maps:

List<Map<String, Object>> listOfMaps = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("name", "Jack");
map1.put("age", 30);
listOfMaps.add(map1);

Map<String, Object> map2 = new HashMap<>();
map2.put("name", "Jones");
map2.put("age", 25);
listOfMaps.add(map2);

3. Iterating a List of Maps Using Traditional Loops

One of the most straightforward approaches to iterating through a List of Maps is using traditional loops, such as for loops:

for (Map<String, Object> map : listOfMaps) {
    for (Map.Entry<String, Object> entry : map.entrySet()) {
        String key = entry.getKey();
        Object value = entry.getValue();
        System.out.format("%s: %s\n", key, value);
    }
}

We first iterate over the List in this approach, obtaining each Map. Then, for each Map, we iterate over its entries using entrySet(), allowing us to access the key and value of each entry.

Here’s the output:

name: Jack
age: 30
name: Jones
age: 25

3.1. Iterating Using Map.keySet() and Map.get()

Alternatively, we can use the keySet() method of the Map interface to retrieve a Set that contains all the keys in the Map. We can then iterate through this Set, and for each key, fetch the corresponding value using the get() method:

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

4. Iterating Using Java Stream

Java 8 introduced streams, providing a more functional approach to processing collections. We can leverage streams to iterate through a List of Maps:

listOfMaps.stream()
  .flatMap(map -> map.entrySet().stream())
  .forEach(entry -> {
      String key = entry.getKey();
      Object value = entry.getValue();
      System.out.format("%s: %s\n", key, value);
  });

Here, we use the flatMap() operation to transform each Map into a stream of its entries. Then, we iterate over each entry and process it accordingly.

5. Iterating Using forEach() Loop With Lambda Expressions

We can iterate through a List of Maps using a forEach() loop combined with lambda expressions:

listOfMaps.forEach(map -> {
    map.forEach((key, value) -> {
        System.out.println("%s: %s\n", key, value);
    });
});

6. Conclusion

In this article, we saw that iterating through a List of Maps in Java can be done in various ways. By mastering the techniques discussed, we’ll be better equipped to handle complex data structures effectively. Whether we prefer traditional loops or streams, choosing the right approach depends on the specific requirements of our project and our coding style preferences.

The source code of all these examples is available over on GitHub.

Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE
res – REST with Spring (eBook) (everywhere)
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments