Bird
Raised Fist0
Kotlinprogramming~10 mins

Collections interop behavior in Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a Kotlin list from a Java list.

Kotlin
val javaList = java.util.ArrayList<String>()
javaList.add("apple")
val kotlinList: List<String> = [1](javaList)
Drag options to blanks, or click blank then click option'
AArrayList
BlistOf
CmutableListOf
DCollections
Attempts:
3 left
💡 Hint
Common Mistakes
Using listOf() which creates an immutable list and does not accept a Java list directly.
Using mutableListOf() which creates an empty list.
2fill in blank
medium

Complete the code to convert a Kotlin list to a Java list.

Kotlin
val kotlinList = listOf("one", "two", "three")
val javaList: java.util.List<String> = kotlinList.[1]()
Drag options to blanks, or click blank then click option'
AtoCollection
BtoMutableList
CtoList
DtoJavaList
Attempts:
3 left
💡 Hint
Common Mistakes
Using toList() which returns an immutable Kotlin list, not a Java list.
Using toJavaList() which does not exist.
3fill in blank
hard

Fix the error in the code to add an element to a Java list obtained from a Kotlin list.

Kotlin
val kotlinList = listOf("a", "b")
val javaList: java.util.List<String> = kotlinList.[1]()
javaList.add("c")
Drag options to blanks, or click blank then click option'
AtoList
BtoSet
CasList
DtoMutableList
Attempts:
3 left
💡 Hint
Common Mistakes
Using toList() which returns an immutable list causing add() to fail.
Using asList() which returns a fixed-size list.
4fill in blank
hard

Fill both blanks to create a Kotlin map from a Java map and access a value.

Kotlin
val javaMap = java.util.HashMap<String, Int>()
javaMap["x"] = 10
val kotlinMap: Map<String, Int> = [1](javaMap)
val value = kotlinMap[[2]]
Drag options to blanks, or click blank then click option'
AHashMap
B"x"
CmapOf
D10
Attempts:
3 left
💡 Hint
Common Mistakes
Using mapOf() which creates an empty map here.
Using 10 as a key instead of "x".
5fill in blank
hard

Fill all three blanks to filter a Kotlin list converted from a Java list.

Kotlin
val javaList = java.util.ArrayList<Int>()
javaList.add(1)
javaList.add(2)
javaList.add(3)
val kotlinList = [1](javaList)
val filtered = kotlinList.filter { it [2] [3] }
Drag options to blanks, or click blank then click option'
AArrayList
B>
C1
DlistOf
Attempts:
3 left
💡 Hint
Common Mistakes
Using listOf which creates an immutable list.
Using '<' instead of '>' in the filter.

Practice

(1/5)
1. In Kotlin, when you use a Java List inside Kotlin code, what happens to the collection?
easy
A. Kotlin wraps the Java list directly without copying it.
B. Kotlin creates a new copy of the Java list.
C. Kotlin converts the Java list to a Kotlin Set.
D. Kotlin throws an error because Java collections are incompatible.

Solution

  1. Step 1: Understand Kotlin-Java collection interop

    Kotlin collections can wrap Java collections directly, meaning no new copy is made.
  2. Step 2: Identify behavior for Java List in Kotlin

    Using a Java List in Kotlin results in a wrapper around the original Java list, preserving changes.
  3. Final Answer:

    Kotlin wraps the Java list directly without copying it. -> Option A
  4. Quick Check:

    Kotlin wraps Java collections directly = D [OK]
Hint: Kotlin wraps Java collections directly, no copying needed [OK]
Common Mistakes:
  • Thinking Kotlin copies Java collections
  • Assuming Java collections convert to Kotlin sets
  • Believing Java collections cause errors in Kotlin
2. Which of the following Kotlin code snippets correctly creates a mutable Kotlin list from a Java ArrayList without copying?
easy
A. val javaList = ArrayList<String>(); val kotlinList = javaList as MutableList<String>
B. val javaList = ArrayList<String>(); val kotlinList = javaList.toMutableList()
C. val javaList = ArrayList<String>(); val kotlinList = javaList.toList()
D. val javaList = ArrayList<String>(); val kotlinList = javaList.copy()

Solution

  1. Step 1: Review Kotlin-Java mutable list interop

    Kotlin mutable lists can be created by casting Java mutable lists directly without copying.
  2. Step 2: Analyze each option

    val javaList = ArrayList<String>(); val kotlinList = javaList as MutableList<String> uses as MutableList<String> to wrap the Java ArrayList directly. toList() and toMutableList() create copies, and there is no copy() method.
  3. Final Answer:

    val javaList = ArrayList<String>(); val kotlinList = javaList as MutableList<String> -> Option A
  4. Quick Check:

    Cast Java list to MutableList for no copy = C [OK]
Hint: Cast Java list to MutableList to avoid copying [OK]
Common Mistakes:
  • Using toList() or toMutableList() which copies
  • Trying to call non-existent copy() method
  • Not casting and expecting automatic conversion
3. What will be the output of the following Kotlin code?
val javaList = java.util.ArrayList<String>()
javaList.add("Kotlin")
val kotlinList: List<String> = javaList
println(kotlinList[0])
javaList.add("Java")
println(kotlinList.size)
medium
A. Kotlin 0
B. Kotlin 1
C. Kotlin 2
D. Compilation error

Solution

  1. Step 1: Understand Kotlin wrapping Java list

    The Kotlin List wraps the Java ArrayList directly, so changes to javaList reflect in kotlinList.
  2. Step 2: Trace the code output

    First print prints "Kotlin" (element at index 0). Then adding "Java" to javaList increases size to 2, so second print outputs 2.
  3. Final Answer:

    Kotlin 2 -> Option C
  4. Quick Check:

    Wrapped list reflects changes = A [OK]
Hint: Kotlin List wraps Java list, reflects changes instantly [OK]
Common Mistakes:
  • Assuming kotlinList is a copy and size stays 1
  • Expecting compilation error due to Java interop
  • Confusing index access with size
4. Consider this Kotlin code snippet:
val javaList = java.util.ArrayList<String>()
val kotlinList: MutableList<String> = javaList
kotlinList.add("Hello")
println(javaList.size)

What is the problem with this code?
medium
A. It compiles but javaList.size remains 0.
B. It compiles and javaList.size becomes 1.
C. It causes a runtime ClassCastException.
D. It causes a compilation error due to type mismatch.

Solution

  1. Step 1: Analyze Kotlin-Java mutable list assignment

    Assigning a Java ArrayList to a Kotlin MutableList variable works because Kotlin treats Java mutable collections as mutable Kotlin collections.
  2. Step 2: Trace mutation effect

    Adding "Hello" to kotlinList modifies the underlying javaList, so javaList.size becomes 1.
  3. Final Answer:

    It compiles and javaList.size becomes 1. -> Option B
  4. Quick Check:

    Mutable Kotlin list wraps Java list, changes reflect = A [OK]
Hint: Mutable Kotlin list wraps Java list; changes affect both [OK]
Common Mistakes:
  • Expecting runtime ClassCastException
  • Thinking javaList.size stays 0 after add
  • Assuming compilation error on assignment
5. You have a Java HashMap<String, Integer> and want to use it in Kotlin as a mutable map without copying. Which Kotlin code correctly achieves this and allows modifying the map?
hard
A. val javaMap = java.util.HashMap() val kotlinMap: Map = javaMap.toMap()
B. val javaMap = java.util.HashMap() val kotlinMap: Map = javaMap as Map
C. val javaMap = java.util.HashMap() val kotlinMap: MutableMap = javaMap.toMutableMap()
D. val javaMap = java.util.HashMap() val kotlinMap: MutableMap = javaMap

Solution

  1. Step 1: Understand Kotlin-Java map interop

    Kotlin mutable maps can directly wrap Java mutable maps like HashMap without copying.
  2. Step 2: Evaluate options for mutability and copying

    The direct assignment val kotlinMap: MutableMap<String, Int> = javaMap wraps the Java HashMap without copying and preserves mutability. In contrast, toMap() and casting to Map provide immutable access, while toMutableMap() creates a new mutable copy.
  3. Final Answer:

    val javaMap = java.util.HashMap<String, Int>() val kotlinMap: MutableMap<String, Int> = javaMap -> Option D
  4. Quick Check:

    Assign Java HashMap to MutableMap for no copy and mutability = B [OK]
Hint: Assign Java HashMap directly to MutableMap for no copy [OK]
Common Mistakes:
  • Using toMap() or toMutableMap() which copies
  • Casting to Map loses mutability
  • Assuming Kotlin creates a new map automatically
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