Skip to content
DeveloperMemos

The Difference Between HashMap and Map in Kotlin

Kotlin, Android Development1 min read

When working with Kotlin, understanding the various data structures available can significantly impact the efficiency and effectiveness of your code. One common area of confusion for many developers is the difference between HashMap and Map in Kotlin. In this article, we will delve into the distinctions between these two, explore their use cases, and provide practical examples to solidify the concepts.

HashMap vs. Map

HashMap

In Kotlin, a HashMap is a collection that stores key-value pairs. It is part of the Java interoperability library and provides a way to store elements. Each element in a HashMap is a key-value pair. The keys are unique, and they are used to retrieve the corresponding values efficiently.

Map

On the other hand, a Map is an interface representing a collection of key-value pairs where keys are unique. Unlike HashMap, Map is not a concrete implementation but an interface that other classes such as HashMap, LinkedHashMap, and TreeMap implement.

Key Differences

The key difference between HashMap and Map lies in their mutability. A Map is an immutable collection that doesn't allow modifications after it's been created. On the contrary, HashMap is mutable, meaning you can add, update, or remove key-value pairs from it.

Code Examples

Let’s delve into some code examples to understand how HashMap and Map work in Kotlin.

Using HashMap

1fun main() {
2 val userAges = hashMapOf("John" to 30, "Alice" to 25, "Bob" to 35)
3 // Adding a new entry
4 userAges["Eve"] = 28
5 // Updating an existing entry
6 userAges["John"] = 31
7
8 for ((name, age) in userAges) {
9 println("$name is $age years old")
10 }
11}

In this example, we create a HashMap called userAges to store the ages of different users. We then add a new entry for "Eve" and update the age of "John" before iterating through the map to print each user's name and age.

Using Map

1fun main() {
2 val userAges = mapOf("John" to 30, "Alice" to 25, "Bob" to 35)
3 // This will not compile
4 // userAges["Eve"] = 28
5}

In this snippet, we create a Map called userAges and attempt to add a new entry for "Eve". However, this will result in a compilation error as Map does not support modifying its contents after creation due to its immutable nature(you would have to use MutableMap instead).

In Closing

Understanding the difference between HashMap and Map in Kotlin is essential for choosing the right data structure based on your specific requirements. While HashMap allows for mutable key-value pairs, Map provides immutability, ensuring the integrity of the original data. Both have their use cases, and selecting the appropriate one will lead to clearer, more maintainable code. Also - if you're looking for a Map with mutability, another option is MutableMap.