📖 Scenario: You are organizing a small party and want to keep track of unique guests who have confirmed their attendance.
🎯 Goal: Build a Kotlin program that creates a set of guest names using setOf and a mutable set using mutableSetOf.
📋 What You'll Learn
Create an immutable set of guest names using setOf
Create a mutable set of guest names using mutableSetOf
Add a new guest to the mutable set
Print both sets to see the guests
💡 Why This Matters
🌍 Real World
Sets are useful to keep track of unique items like guest lists, product IDs, or tags without duplicates.
💼 Career
Understanding sets helps in data processing, filtering duplicates, and managing collections efficiently in software development.
Progress0 / 4 steps
1
Create an immutable set of guests
Create an immutable set called guests using setOf with these exact names: "Alice", "Bob", "Charlie".
Kotlin
Hint
Use val guests = setOf("Alice", "Bob", "Charlie") to create the set.
2
Create a mutable set of guests
Create a mutable set called mutableGuests using mutableSetOf with these exact names: "Alice", "Bob", "Charlie".
Kotlin
Hint
Use val mutableGuests = mutableSetOf("Alice", "Bob", "Charlie") to create the mutable set.
3
Add a new guest to the mutable set
Add the guest "Diana" to the mutable set mutableGuests using the add method.
Kotlin
Hint
Use mutableGuests.add("Diana") to add the new guest.
4
Print both sets
Print the immutable set guests and the mutable set mutableGuests using two separate println statements.
Kotlin
Hint
Use println(guests) and println(mutableGuests) to display the sets.
Practice
(1/5)
1. What does the Kotlin function setOf(1, 2, 2, 3) return?
easy
A. A list containing elements: 1, 2, 2, 3
B. A set containing duplicates: 1, 2, 2, 3
C. A set containing unique elements: 1, 2, 3
D. An error because of duplicate elements
Solution
Step 1: Understand setOf behavior
setOf creates a set that holds only unique elements, automatically removing duplicates.
Step 2: Analyze the input elements
The input has elements 1, 2, 2, 3. The duplicate 2 is ignored in the set.
Final Answer:
A set containing unique elements: 1, 2, 3 -> Option C
Quick Check:
setOf removes duplicates = unique elements [OK]
Hint: Remember: sets keep only unique items [OK]
Common Mistakes:
Thinking sets keep duplicates like lists
Confusing setOf with listOf
Expecting an error for duplicates
2. Which of the following is the correct way to create a mutable set of strings in Kotlin?
easy
A. val mySet = mutableSetOf<String>("apple", "banana")
B. val mySet = setOf<String>("apple", "banana")
C. val mySet = mutableSet("apple", "banana")
D. val mySet = mutableSetOf("apple", "banana")
Solution
Step 1: Identify correct syntax for mutableSetOf
The correct function is mutableSetOf with type parameter and parentheses.
Step 2: Check each option
val mySet = mutableSetOf<String>("apple", "banana") uses mutableSetOf<String>("apple", "banana"), which is correct. val mySet = setOf<String>("apple", "banana") uses setOf which creates an immutable set. val mySet = mutableSet("apple", "banana") uses a non-existent function mutableSet. val mySet = mutableSetOf("apple", "banana") has a syntax error with an extra quote.
Final Answer:
val mySet = mutableSetOf<String>("apple", "banana") -> Option A
Quick Check:
mutableSetOf syntax correct = val mySet = mutableSetOf<String>("apple", "banana") [OK]
Hint: Use mutableSetOf() to create changeable sets [OK]
Common Mistakes:
Using setOf instead of mutableSetOf for mutable sets
Misspelling mutableSetOf
Syntax errors with quotes or parentheses
3. What will be the output of this Kotlin code?
val numbers = mutableSetOf(1, 2, 3)
numbers.add(2)
numbers.add(4)
println(numbers)
medium
A. Compilation error
B. [1, 2, 3, 2, 4]
C. [1, 2, 3]
D. [1, 2, 3, 4]
Solution
Step 1: Understand mutableSetOf and add behavior
The set starts with 1, 2, 3. Adding 2 again does nothing because sets ignore duplicates. Adding 4 adds a new element.
Step 2: Determine final set contents
After additions, the set contains 1, 2, 3, and 4.
Final Answer:
[1, 2, 3, 4] -> Option D
Quick Check:
Sets ignore duplicates, so 2 is not added twice [OK]
Hint: Adding duplicates to sets does nothing [OK]
Common Mistakes:
Expecting duplicates to appear in output
Confusing set print format with list
Thinking add returns error on duplicates
4. Identify the error in this Kotlin code snippet:
val fruits = setOf("apple", "banana")
fruits.add("orange")
println(fruits)
medium
A. Syntax error in setOf declaration
B. Cannot add elements to an immutable set
C. Missing import for setOf
D. No error, code runs fine
Solution
Step 1: Check mutability of setOf
setOf creates an immutable set that cannot be changed after creation.
Step 2: Analyze the add operation
Calling add on an immutable set causes a compilation error because the set cannot be modified.
Final Answer:
Cannot add elements to an immutable set -> Option B
Quick Check:
setOf = immutable, add() not allowed [OK]
Hint: Use mutableSetOf to add or remove items [OK]
Common Mistakes:
Trying to modify immutable sets
Confusing setOf with mutableSetOf
Ignoring compiler error messages
5. You want to create a mutable set of integers from a list but only include numbers greater than 5. Which Kotlin code correctly does this?
hard
A. val nums = mutableSetOf(1, 6, 8, 3, 7).filterTo(mutableSetOf()) { it > 5 }
B. val nums = setOf(1, 6, 8, 3, 7).filter { it > 5 }.toSet()
C. val nums = mutableSetOf(1, 6, 8, 3, 7).filter { it > 5 }
D. val nums = mutableSetOf(1, 6, 8, 3, 7).filter { it > 5 }.toSet()
Solution
Step 1: Understand filtering and set creation
We want a mutable set with only numbers > 5. Using filterTo with a mutable set collects filtered items directly into a mutable set.
Step 2: Evaluate each option
val nums = mutableSetOf(1, 6, 8, 3, 7).filter { it > 5 } returns a List, not a mutable set. val nums = mutableSetOf(1, 6, 8, 3, 7).filterTo(mutableSetOf()) { it > 5 } correctly filters into a mutable set. val nums = setOf(1, 6, 8, 3, 7).filter { it > 5 }.toSet() creates an immutable set first, then filters to list and toSet(), producing an immutable set, not mutable. val nums = mutableSetOf(1, 6, 8, 3, 7).filter { it > 5 }.toSet() filters to a list then toSet(), producing an immutable set, not mutable.
Final Answer:
val nums = mutableSetOf(1, 6, 8, 3, 7).filterTo(mutableSetOf()) { it > 5 } -> Option A
Quick Check:
filterTo with mutableSetOf creates mutable set directly [OK]
Hint: Use filterTo(mutableSetOf()) for filtered mutable sets [OK]
Common Mistakes:
Using filter() returns list, not set
Not converting to mutable set after filtering
Confusing setOf and mutableSetOf usage
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.