Lists help you keep many items together in order. You use listOf to make a list you cannot change, and mutableListOf to make a list you can change later.
List creation (listOf, mutableListOf) in Kotlin
fun main() { val fixedList = listOf<Type>(item1, item2, item3) val changeableList = mutableListOf<Type>(item1, item2, item3) }
listOf creates a list that cannot be changed (read-only).
mutableListOf creates a list that you can add, remove, or change items in.
val emptyList = listOf<String>()
val singleItemList = listOf(42)
val mutableList = mutableListOf("apple", "banana") mutableList.add("cherry")
val mutableEmptyList = mutableListOf<Int>() mutableEmptyList.add(10)
This program shows how to create a fixed list and a mutable list. It prints the fixed list, then adds and removes items from the mutable list, printing the list each time.
fun main() { // Create a fixed list of fruits val fruits = listOf("apple", "banana", "cherry") println("Fixed list of fruits: $fruits") // Create a mutable list of numbers val numbers = mutableListOf(1, 2, 3) println("Mutable list before adding: $numbers") // Add a number to the mutable list numbers.add(4) println("Mutable list after adding: $numbers") // Remove a number from the mutable list numbers.remove(2) println("Mutable list after removing: $numbers") }
Time complexity: Accessing items by index is fast (O(1)). Adding or removing items in mutableListOf is usually fast but can be slower if the list needs to resize.
Space complexity: Lists use space proportional to the number of items they hold.
A common mistake is trying to add or remove items from a list created with listOf, which is not allowed.
Use listOf when you want a list that should not change, and mutableListOf when you need to change the list after creating it.
listOf creates a fixed, read-only list.
mutableListOf creates a list you can change by adding or removing items.
Choose the right list type based on whether you need to change the list later.
Practice
Solution
Step 1: Understand listOf behavior
listOfcreates a fixed list that cannot be changed after creation.Step 2: Compare with mutableListOf
mutableListOfcreates a list that can be changed (add/remove items).Final Answer:
listOf -> Option AQuick Check:
Fixed list = listOf [OK]
- Confusing mutableListOf as fixed list
- Thinking arrayListOf is immutable
- Using setOf which creates a set, not a list
Solution
Step 1: Identify correct function name
The correct function to create a mutable list ismutableListOf.Step 2: Check syntax correctness
Options C and D use invalid function names. val list = listOf(1, 2, 3) creates an immutable list.Final Answer:
val list = mutableListOf(1, 2, 3) -> Option BQuick Check:
Mutable list syntax = mutableListOf(...) [OK]
- Using listOf instead of mutableListOf for mutable lists
- Misspelling mutableListOf as mutableList
- Using list() which does not exist
val list = listOf("apple", "banana", "cherry")
println(list[1])Solution
Step 1: Understand list indexing
Kotlin lists use zero-based indexing, so index 1 refers to the second item.Step 2: Identify the item at index 1
The list is ["apple", "banana", "cherry"], so index 1 is "banana".Final Answer:
banana -> Option AQuick Check:
Index 1 = second item = banana [OK]
- Thinking index 1 is the first item
- Expecting an error for valid index
- Confusing listOf with mutableListOf output
val list = listOf(1, 2, 3) list.add(4)
Solution
Step 1: Check list type
listOfcreates an immutable (read-only) list.Step 2: Understand add() method
Theadd()method is only available on mutable lists, not on immutable lists.Final Answer:
listOf creates an immutable list; add() is not allowed -> Option CQuick Check:
Immutable list cannot add items [OK]
- Trying to add to listOf list
- Ignoring immutability of listOf
- Assuming add() works on all lists
Solution
Step 1: Choose a mutable list
To add items later, the list must be mutable, so usemutableListOf.Step 2: Use add() method correctly
Callingadd("orange")on a mutable list adds the item successfully.Step 3: Check other options
val fruits = listOf("apple", "banana") fruits.add("orange") tries to add to immutable list (error). val fruits = listOf("apple", "banana") fruits += "orange" uses += on immutable list (creates new list but does not modify original). val fruits = mutableListOf("apple", "banana") fruits = fruits + "orange" tries to reassign val which is not allowed.Final Answer:
val fruits = mutableListOf("apple", "banana") fruits.add("orange") -> Option DQuick Check:
Mutable list + add() = correct way [OK]
- Adding to immutable list
- Trying to reassign val variable
- Using += on immutable list expecting mutation
Ready to prove it?
Pass the test and this pattern moves unknown
