📖 Scenario: You work in a small bookstore. You have a map of book titles and their prices. You want to update the prices by adding a fixed tax to each book.
🎯 Goal: Build a Kotlin program that creates a map of books and prices, sets a tax rate, applies the tax to each price using map transformation, and prints the updated prices.
📋 What You'll Learn
Create a map called bookPrices with these exact entries: "Kotlin Basics" to 30, "Advanced Kotlin" to 45, "Coroutines Guide" to 40
Create a variable called taxRate and set it to 0.1 (which means 10% tax)
Use mapValues on bookPrices to create a new map called updatedPrices where each price is increased by the tax rate
Print the updatedPrices map
💡 Why This Matters
🌍 Real World
Bookstores and shops often need to update prices by adding taxes or discounts to their product lists.
💼 Career
Understanding map transformations is useful for data processing, pricing algorithms, and working with collections in Kotlin.
Progress0 / 4 steps
1
Create the initial map of book prices
Create a map called bookPrices with these exact entries: "Kotlin Basics" to 30, "Advanced Kotlin" to 45, "Coroutines Guide" to 40
Kotlin
Hint
Use mapOf to create a map with the given key-value pairs.
2
Set the tax rate
Create a variable called taxRate and set it to 0.1 (which means 10% tax)
Kotlin
Hint
Use val taxRate = 0.1 to set the tax rate.
3
Apply the tax to each price using mapValues
Use mapValues on bookPrices to create a new map called updatedPrices where each price is increased by the tax rate
Kotlin
Hint
Use mapValues with a lambda that multiplies each price by 1 + taxRate and converts to Int.
4
Print the updated prices
Write println(updatedPrices) to display the updated prices map
Kotlin
Hint
Use println(updatedPrices) to show the final map with updated prices.
Practice
(1/5)
1. What does the map function do when applied to a list in Kotlin?
easy
A. It removes elements from the list based on a condition.
B. It creates a new list by applying a transformation to each element.
C. It sorts the list in ascending order.
D. It changes the original list by modifying its elements.
Solution
Step 1: Understand the purpose of map
The map function applies a given transformation to each element of the list.
Step 2: Check the effect on the list
It returns a new list with transformed elements without changing the original list.
Final Answer:
It creates a new list by applying a transformation to each element. -> Option B
Quick Check:
map transforms each item and returns new list [OK]
Hint: Remember: map returns a new list, original stays same [OK]
Common Mistakes:
Thinking map modifies the original list
Confusing map with filter or sort
Assuming map removes elements
2. Which of the following is the correct syntax to transform a list of integers by doubling each value using map in Kotlin?
easy
A. val result = list.map { it * 2 }
B. val result = list.map(it * 2)
C. val result = list.map -> it * 2
D. val result = list.map { it + 2 }
Solution
Step 1: Identify correct lambda syntax
The map function requires a lambda inside curly braces: { it * 2 }.
Step 2: Check the transformation logic
Doubling means multiplying by 2, so it * 2 is correct.
Final Answer:
val result = list.map { it * 2 } -> Option A
Quick Check:
Correct lambda syntax with doubling [OK]
Hint: Use curly braces and 'it' for lambda in map [OK]
Common Mistakes:
Missing curly braces around lambda
Using parentheses instead of braces
Wrong operation inside lambda
3. What is the output of the following Kotlin code?
val numbers = listOf(1, 2, 3) val result = numbers.map { it + 5 } println(result)
medium
A. [6, 7, 8]
B. [1, 2, 3, 5]
C. [5, 6, 7]
D. [1, 2, 3]
Solution
Step 1: Apply the map transformation
Each element in numbers is increased by 5: 1+5=6, 2+5=7, 3+5=8.
Step 2: Form the new list
The new list is [6, 7, 8], which is printed.
Final Answer:
[6, 7, 8] -> Option A
Quick Check:
Each number +5 = [6, 7, 8] [OK]
Hint: Add 5 to each element inside map to get output [OK]
Common Mistakes:
Confusing original list with transformed list
Adding 5 only once instead of to each element
Misreading the output format
4. Identify the error in this Kotlin code snippet:
val list = listOf(1, 2, 3) val newList = list.map(it * 3) println(newList)
medium
A. The multiplication operator is incorrect.
B. Using map on a list is not allowed.
C. The list should be mutable to use map.
D. Missing curly braces around the lambda expression.
Solution
Step 1: Check lambda syntax in map
The map function requires a lambda inside curly braces, but here parentheses are used without braces.
Step 2: Confirm correct usage
Correct syntax is list.map { it * 3 } to apply multiplication.
Final Answer:
Missing curly braces around the lambda expression. -> Option D
Quick Check:
Lambda needs braces in map [OK]
Hint: Always use curly braces for lambda in map [OK]
Common Mistakes:
Using parentheses instead of braces for lambda
Thinking map needs mutable list
Misunderstanding operator usage
5. Given a list of strings val words = listOf("apple", "banana", "cherry"), how can you create a map where each word is a key and its length is the value using Kotlin's map transformation?
hard
A. val wordLengths = words.associateWith { it.length }
B. val wordLengths = words.map { it.length to it }
C. val wordLengths = words.map { it to it.length } .toMap()
D. val wordLengths = words.map { it.length }
Solution
Step 1: Understand the goal
We want a map where keys are words and values are their lengths.
Step 2: Use map to create pairs and convert to map
words.map { it to it.length } creates pairs (word, length). Then toMap() converts the list of pairs to a map.
Final Answer:
val wordLengths = words.map { it to it.length } .toMap() -> Option C
Quick Check:
Map pairs then convert to map [OK]
Hint: Use map to pairs and then toMap() for map creation [OK]
Common Mistakes:
Using associateWith is correct but not the asked map transformation
Mapping only lengths returns list, not map
Swapping key and value in pairs
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.