Bird
Raised Fist0
Kotlinprogramming~20 mins

Associate for map creation in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Associate Map Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Kotlin code using associate?
Consider the following Kotlin code snippet that creates a map from a list of strings using associate. What will be printed?
Kotlin
val fruits = listOf("apple", "banana", "cherry")
val map = fruits.associate { it to it.length }
println(map)
ACompilation error
B{apple=5, banana=6, cherry=7}
C{apple=4, banana=6, cherry=6}
D{apple=5, banana=6, cherry=6}
Attempts:
2 left
💡 Hint
Remember that associate creates a map where each key-value pair is defined by the lambda.
❓ Predict Output
intermediate
2:00remaining
What does this Kotlin code print when using associateBy?
Look at this Kotlin code that uses associateBy. What is the output?
Kotlin
data class Person(val name: String, val age: Int)

val people = listOf(Person("Alice", 30), Person("Bob", 25), Person("Charlie", 30))
val map = people.associateBy { it.age }
println(map)
A{30=Person(name=Alice, age=30), 25=Person(name=Charlie, age=30)}
B{30=Person(name=Alice, age=30), 25=Person(name=Bob, age=25)}
C{30=Person(name=Charlie, age=30), 25=Person(name=Bob, age=25)}
DRuntime exception
Attempts:
2 left
💡 Hint
When keys are duplicated, the last element wins in associateBy.
🔧 Debug
advanced
2:00remaining
Why does this Kotlin code cause a compilation error?
Examine this Kotlin code snippet. It tries to create a map using associate but fails to compile. What is the cause?
Kotlin
val numbers = listOf(1, 2, 3)
val map = numbers.associate { it * 2 }
println(map)
AThe list cannot be used with associate on Int elements.
BThe println statement is missing parentheses.
CThe associate function requires a map as input.
DThe lambda must return a Pair, but it returns an Int.
Attempts:
2 left
💡 Hint
Check what the lambda inside associate should return.
❓ Predict Output
advanced
2:00remaining
What is the output of this Kotlin code using associateWith?
Given this Kotlin code using associateWith, what will be printed?
Kotlin
val words = listOf("one", "two", "three")
val map = words.associateWith { it.length }
println(map)
A{one=3, two=3, three=5}
B{3=one, 3=two, 5=three}
C{one=3, two=3, three=6}
DCompilation error
Attempts:
2 left
💡 Hint
associateWith creates a map where each element is the key and the lambda result is the value.
🧠 Conceptual
expert
2:00remaining
How many entries are in the map created by this Kotlin code?
Consider this Kotlin code that creates a map from a list of pairs using associate. How many entries will the resulting map have?
Kotlin
val pairs = listOf("a" to 1, "b" to 2, "a" to 3, "c" to 4)
val map = pairs.associate { it }
println(map.size)
A3
B4
C2
DCompilation error
Attempts:
2 left
💡 Hint
When keys repeat, the last value overwrites previous ones in a map.

Practice

(1/5)
1. What does the associate function do in Kotlin when used on a list?
easy
A. It filters elements based on a condition.
B. It creates a map by pairing each element with a key and value.
C. It sorts the list in ascending order.
D. It converts the list into a set.

Solution

  1. Step 1: Understand the purpose of associate

    The associate function transforms a list into a map by creating key-value pairs from each element.
  2. Step 2: Compare with other functions

    Sorting, filtering, and converting to a set are different operations and not what associate does.
  3. Final Answer:

    It creates a map by pairing each element with a key and value. -> Option B
  4. Quick Check:

    associate creates map = It creates a map by pairing each element with a key and value. [OK]
Hint: associate always creates a map from list elements [OK]
Common Mistakes:
  • Confusing associate with sorting or filtering
  • Thinking associate returns a list or set
  • Assuming associate keeps duplicates as keys
2. Which of the following is the correct syntax to create a map from a list of strings listOf("a", "b") using associate where keys are the strings and values are their lengths?
easy
A. listOf("a", "b").associateWith { it }
B. listOf("a", "b").associate { it.length to it }
C. listOf("a", "b").associateBy { it.length }
D. listOf("a", "b").associate { it to it.length }

Solution

  1. Step 1: Identify key-value pairing

    We want keys as strings and values as their lengths, so key = it, value = it.length.
  2. Step 2: Match syntax

    associate { it to it.length } correctly pairs each element with its length.
  3. Final Answer:

    listOf("a", "b").associate { it to it.length } -> Option D
  4. Quick Check:

    key=string, value=length = listOf("a", "b").associate { it to it.length } [OK]
Hint: Use 'associate { key to value }' for custom map pairs [OK]
Common Mistakes:
  • Swapping key and value in the pair
  • Using associateBy or associateWith incorrectly
  • Forgetting to use 'to' for pairs
3. What is the output of the following Kotlin code?
val list = listOf("cat", "dog", "bird")
val map = list.associate { it.first() to it.length }
println(map)
medium
A. Compilation error
B. {cat=3, dog=3, bird=4}
C. {c=3, d=3, b=4}
D. {c=3, d=3, b=3}

Solution

  1. Step 1: Analyze the associate lambda

    Each element's first character is the key, and the length of the string is the value.
  2. Step 2: Map entries

    "cat" -> 'c' to 3, "dog" -> 'd' to 3, "bird" -> 'b' to 4.
  3. Final Answer:

    {c=3, d=3, b=4} -> Option C
  4. Quick Check:

    Keys are first chars, values are lengths = {c=3, d=3, b=4} [OK]
Hint: associate uses lambda to create key-value pairs [OK]
Common Mistakes:
  • Confusing keys with full strings
  • Mixing up length values
  • Expecting a list instead of a map
4. Identify the error in this Kotlin code snippet:
val numbers = listOf(1, 2, 3, 2)
val map = numbers.associate { it to it * 2 }
println(map)
medium
A. Later duplicate keys overwrite earlier ones silently.
B. Syntax error in associate lambda.
C. Duplicate keys cause runtime exception.
D. associate cannot be used with integers.

Solution

  1. Step 1: Check for duplicate keys

    The list has duplicate '2' values, so key '2' appears twice.
  2. Step 2: Understand associate behavior with duplicates

    associate overwrites earlier keys silently; no error occurs.
  3. Final Answer:

    Later duplicate keys overwrite earlier ones silently. -> Option A
  4. Quick Check:

    Duplicates overwrite silently = Later duplicate keys overwrite earlier ones silently. [OK]
Hint: Duplicate keys overwrite previous silently in associate [OK]
Common Mistakes:
  • Expecting runtime error on duplicate keys
  • Thinking associate syntax is wrong
  • Believing associate can't handle integers
5. Given a list of pairs listOf("apple" to 1, "banana" to 2, "apple" to 3), how can you create a map that sums values for duplicate keys using associate or similar Kotlin functions?
hard
A. Use groupBy then mapValues to sum values.
B. Use associate directly; it sums duplicates automatically.
C. Use associateBy with a sum lambda.
D. Use associateWith to sum values.

Solution

  1. Step 1: Understand associate limitation

    associate overwrites duplicate keys; it does not sum values.
  2. Step 2: Use groupBy and mapValues

    Group pairs by key, then sum the values in each group to get combined totals.
  3. Final Answer:

    Use groupBy then mapValues to sum values. -> Option A
  4. Quick Check:

    Sum duplicates by grouping, not associate = Use groupBy then mapValues to sum values. [OK]
Hint: Sum duplicates by grouping, not associate [OK]
Common Mistakes:
  • Expecting associate to sum duplicates
  • Using associateBy incorrectly for summing
  • Confusing associateWith purpose
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard