Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
HashSet for unique elements
📖 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]