📖 Scenario: You are organizing a guest list for a party. Some guests accidentally appear more than once on the list. You want to make sure each guest is invited only once.
🎯 Goal: Build a program that uses a HashSet to store unique guest names and then display the list of unique guests.
📋 What You'll Learn
Create a HashSet<string> to hold guest names
Add guest names to the HashSet, including duplicates
Use a foreach loop to iterate over the HashSet
Print each unique guest name
💡 Why This Matters
🌍 Real World
Removing duplicates from lists is common when managing contacts, emails, or any collection where uniqueness matters.
💼 Career
Understanding HashSet helps in writing efficient code for data processing, filtering, and ensuring data integrity in software development.
Progress0 / 4 steps
1
Create the initial guest list
Create a List<string> called guestList with these exact names: "Alice", "Bob", "Alice", "Charlie", "Bob".
C Sharp (C#)
Hint
Use new List<string> { ... } to create the list with the exact names.
2
Create a HashSet for unique guests
Create a HashSet<string> called uniqueGuests and initialize it with the guestList.
C Sharp (C#)
Hint
Use the HashSet constructor that takes a collection to remove duplicates.
3
Iterate over the unique guests
Use a foreach loop with the variable guest to iterate over uniqueGuests.
C Sharp (C#)
Hint
Write foreach (string guest in uniqueGuests) to loop through the unique names.
4
Print the unique guest names
Inside the foreach loop, write Console.WriteLine(guest); to print each unique guest name.
C Sharp (C#)
Hint
Use Console.WriteLine(guest); inside the loop to print each name.
Practice
(1/5)
1. What is the main purpose of using a HashSet<T> in C#?
easy
A. To allow duplicate elements for faster access
B. To store elements in sorted order
C. To store unique elements without duplicates
D. To store key-value pairs like a dictionary
Solution
Step 1: Understand HashSet behavior
A HashSet automatically ignores duplicate entries and stores only unique elements.
Step 2: Compare with other collections
Unlike lists or dictionaries, HashSet does not allow duplicates and does not maintain order.
Final Answer:
To store unique elements without duplicates -> Option C
Quick Check:
HashSet = Unique elements [OK]
Hint: HashSet always keeps unique items only [OK]
Common Mistakes:
Thinking HashSet keeps elements sorted
Assuming HashSet allows duplicates
Confusing HashSet with Dictionary
2. Which of the following is the correct way to declare and initialize a HashSet<int> with values 1, 2, and 3?
easy
A. var set = HashSet<int> = {1, 2, 3};
B. var set = new HashSet<int> {1, 2, 3};
C. var set = new HashSet<int>[1, 2, 3];
D. var set = new HashSet<int>(1, 2, 3);
Solution
Step 1: Check HashSet initialization syntax
HashSet can be initialized with collection initializer syntax using curly braces after the constructor.
Step 2: Validate each option
var set = new HashSet<int> {1, 2, 3}; uses correct syntax: new HashSet<int> {1, 2, 3}; Options A, B, and C have invalid syntax.
Final Answer:
var set = new HashSet<int> {1, 2, 3}; -> Option B
Quick Check:
Use curly braces after constructor for initialization [OK]
Hint: Use curly braces after new HashSet for values [OK]
Common Mistakes:
Using parentheses with multiple values directly
Trying to declare array instead of HashSet
Incorrect assignment syntax
3. What will be the output of the following C# code?
var set = new HashSet<string>();
set.Add("apple");
set.Add("banana");
set.Add("apple");
Console.WriteLine(set.Count);
medium
A. 0
B. 3
C. 1
D. 2
Solution
Step 1: Add elements to HashSet
"apple" is added first, then "banana", then "apple" again.
Step 2: Understand duplicate handling
The second "apple" is ignored because HashSet stores unique elements only.
4. Identify the error in this code snippet using HashSet<int>:
HashSet<int> numbers = new HashSet<int>();
numbers.Add(1);
numbers.Add(2);
numbers.Add(1);
Console.WriteLine(numbers[0]);
medium
A. HashSet does not support indexing with []
B. Cannot add duplicate values to HashSet
C. HashSet must be initialized with values
D. Add method returns void, cannot be used like this
Solution
Step 1: Review HashSet usage
HashSet stores unique elements but does not support accessing elements by index.
Step 2: Identify invalid operation
Using numbers[0] causes a compile-time error because HashSet has no indexer.
Final Answer:
HashSet does not support indexing with [] -> Option A
Quick Check:
No index access on HashSet [OK]
Hint: HashSet has no indexer; use foreach or Contains [OK]
Common Mistakes:
Trying to access elements by index
Thinking Add returns a value
Assuming duplicates cause errors
5. You have a list of integers with duplicates: List<int> nums = new List<int> {1, 2, 2, 3, 4, 4, 4, 5}; Which code snippet correctly creates a HashSet<int> containing only the unique elements from nums?
hard
A. var unique = new HashSet<int>(nums);
B. var unique = new HashSet<int>(); unique.Add(nums);
C. var unique = new HashSet<int>(); foreach(var n in nums) unique = n;
D. var unique = new HashSet<int>(); unique.AddRange(nums);
Solution
Step 1: Understand HashSet constructor
HashSet has a constructor that accepts an IEnumerable<T> to initialize with unique elements.
Step 2: Analyze each option
var unique = new HashSet<int>(nums); correctly passes the list to the constructor. var unique = new HashSet<int>(); unique.Add(nums); tries to add the whole list as one item (invalid). var unique = new HashSet<int>(); foreach(var n in nums) unique = n; assigns int to HashSet variable (invalid). var unique = new HashSet<int>(); unique.AddRange(nums); uses AddRange which HashSet does not have.
Final Answer:
var unique = new HashSet<int>(nums); -> Option A
Quick Check:
Use constructor with collection for unique set [OK]
Hint: Pass list to HashSet constructor for unique items [OK]
Common Mistakes:
Using Add to add whole list at once
Trying to assign int to HashSet variable
Using AddRange which HashSet lacks
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.