Learn through the super-clean Baeldung Pro experience:
>> Membership and Baeldung Pro.
No ads, dark-mode and 6 months free of IntelliJ Idea Ultimate to start with.
In this short tutorial, we’ll look at how to iterate over a map in Kotlin. We’ll see how we can do this with for loops, iterators, and some handy extension functions.
The simplest way to iterate over a map is to iterate over its Entry objects:
val map = mapOf("Key1" to "Value1", "Key2" to "Value2", "Key3" to "Value3")
map.forEach { entry ->
print("${entry.key} : ${entry.value}")
}
Here, the in operator gives us a handle to the iterator of the map’s entries property. This is essentially the same as:
for (entry in map.entries.iterator()) {
print("${entry.key} : ${entry.value}")
}
We can also use the handy forEach extension function:
map.forEach { entry ->
print("${entry.key} : ${entry.value}")
}
To further reduce boilerplate, we can use destructuring. Doing so expands the Entry into handy key and value variables:
map.forEach { (key, value) ->
print("$key : $value")
}
Sometimes, we’d only like to iterate over the keys in the map. In that case, we can use the map’s keys property:
for (key in map.keys) {
print(key)
}
Here, we get a Set of all keys in the map. This also means we can use the Set‘s forEach extension function:
map.keys.forEach { key ->
val value = map[key]
print("$key : $value")
}
We should note that iterating over keys and values this way is less efficient. This is because we make multiple get calls on the map to fetch values for the given keys. This can be avoided by using the Entry iteration approach, for instance.
Similarly, we can use the map’s values property to get a collection of all values:
for (value in map.values) {
print(value)
}
Since the values property gives us a collection, we can use the forEach pattern here:
map.values.forEach { value ->
print(value)
}
In this article, we saw several ways to iterate over a map. Some approaches are more flexible but come with a performance cost.
For most use cases, using forEach over entries is a good option.