Map creation (mapOf, mutableMapOf) in Kotlin - Time & Space Complexity
When we create a map in Kotlin, the program needs to add each item one by one. Understanding how the time needed grows as we add more items helps us write better code.
We want to know: How does the time to create a map change when we add more entries?
Analyze the time complexity of the following code snippet.
val numbers = listOf("one" to 1, "two" to 2, "three" to 3)
val map = mutableMapOf()
for ((key, value) in numbers) {
map[key] = value
}
This code creates a mutable map and adds each pair from a list into it one by one.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Adding each key-value pair to the map inside the loop.
- How many times: Once for every item in the input list.
Each new item means one more add operation. So if you double the items, you double the work.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 adds |
| 100 | 100 adds |
| 1000 | 1000 adds |
Pattern observation: The time grows directly with the number of items added.
Time Complexity: O(n)
This means the time to create the map grows in a straight line with the number of items you add.
[X] Wrong: "Adding items to a map is instant no matter how many items there are."
[OK] Correct: Each item still needs to be placed inside the map, so more items mean more work and more time.
Knowing how map creation time grows helps you explain your code choices clearly and shows you understand how data structures work behind the scenes.
"What if we used a mapOf() with all items at once instead of adding them one by one? How would the time complexity change?"
Practice
mapOf create in Kotlin?Solution
Step 1: Understand
mapOfpurposemapOfcreates a map with key-value pairs that cannot be modified after creation.Step 2: Compare with other map types
mutableMapOfallows changes, butmapOfdoes not.Final Answer:
A fixed map that cannot be changed after creation -> Option CQuick Check:
mapOf= fixed map [OK]
- Confusing mapOf with mutableMapOf
- Thinking mapOf creates an empty map
- Assuming mapOf allows adding new entries
Solution
Step 1: Identify correct syntax for mutableMapOf
The correct syntax usesmutableMapOfwith pairs usingtokeyword.Step 2: Check each option
val map = mutableMapOf("a" to 1, "b" to 2) usesmutableMapOfandtocorrectly. val map = mapOf("a" -> 1, "b" -> 2) uses wrong arrow->. val map = mutableMapOf("a" = 1, "b" = 2) uses=which is invalid here. val map = mapOf("a" to 1, "b" to 2) usesmapOfwhich creates an immutable map.Final Answer:
val map = mutableMapOf("a" to 1, "b" to 2) -> Option AQuick Check:
mutableMapOf + to = correct syntax [OK]
- Using -> instead of to for pairs
- Using = inside mapOf or mutableMapOf
- Confusing mapOf and mutableMapOf
val map = mapOf("x" to 10, "y" to 20)
println(map["x"])
println(map["z"])Solution
Step 1: Access existing key "x"
map["x"] returns 10 because "x" is a key with value 10.Step 2: Access non-existing key "z"
map["z"] returns null because "z" is not in the map.Final Answer:
10\nnull -> Option BQuick Check:
Existing key returns value, missing key returns null [OK]
- Expecting 0 instead of null for missing key
- Confusing values of different keys
- Assuming map is mutable and can add keys
val map = mapOf("a" to 1)
map["b"] = 2Solution
Step 1: Understand mapOf immutability
mapOfcreates an immutable map that cannot be changed after creation.Step 2: Adding entries to immutable map causes error
Trying to assign a new key-value pair withmap["b"] = 2causes a compile-time error because the map is immutable.Final Answer:
mapOf creates an immutable map, so you cannot add new entries -> Option AQuick Check:
Immutable map cannot be changed [OK]
- Trying to add entries to mapOf
- Using wrong syntax for adding entries
- Confusing mutableMapOf and mapOf
Solution
Step 1: Choose a mutable map to allow updates
Since scores need to be updated,mutableMapOfis required.Step 2: Use correct method to update value
Assigning withscores["Alice"] = 95correctly updates the value in a mutable map.Step 3: Check other options for errors
val scores = mapOf("Alice" to 90, "Bob" to 85) scores["Alice"] = 95 uses immutable map and tries to update, causing error. val scores = mapOf("Alice" to 90, "Bob" to 85) scores.put("Alice", 95) tries to useputon immutable map, error. val scores = mutableMapOf("Alice" to 90, "Bob" to 85) scores.add("Alice", 95) uses non-existentaddmethod.Final Answer:
val scores = mutableMapOf("Alice" to 90, "Bob" to 85) scores["Alice"] = 95 -> Option DQuick Check:
mutableMapOf + assignment updates map [OK]
- Using mapOf when updates are needed
- Trying to use put on immutable map
- Using add method which does not exist
Ready to prove it?
Pass the test and this pattern moves unknown
