C# में HashSet<T>: यूनिक एलिमेंट्स का अनऑर्डर्ड सेट
HashSet<T> (System.Collections.Generic) एक उच्च-प्रदर्शन सेट कलेक्शन है जो डुप्लिकेट एलिमेंट्स को स्वचालित रूप से हटा देता है। यह गणितीय सेट ऑपरेशन्स (यूनियन, इंटरसेक्शन, डिफरेंस) प्रदान करता है और O(1) औसत लुकअप/इन्सर्शन देता है।
उदाहरण: डुप्लिकेट स्ट्रिंग्स हटाना
using System;
using System.Collections.Generic;
class Program {
static void Main() {
string[] arr1 = { "bus", "truck", "bus", "car", "truck" };
Console.WriteLine("Original: " + string.Join(", ", arr1));
// HashSet से डुप्लिकेट हटाएं
var set = new HashSet<string>(arr1);
string[] arr2 = set.ToArray(); // या set.ToList()
Console.WriteLine("Unique: " + string.Join(", ", arr2));
}
}
आउटपुट
Original: bus, truck, bus, car, truck Unique: bus, truck, car
मुख्य मेथड्स और प्रॉपर्टीज
| मेथड/प्रॉपर्टी | विवरण |
|---|---|
Add(T) | एलिमेंट जोड़ता है; डुप्लिकेट होने पर false लौटाता है। |
Remove(T) | एलिमेंट हटाता है; मिलने पर true लौटाता है। |
Contains(T) | O(1) में जांचता है कि एलिमेंट मौजूद है या नहीं। |
Count | एलिमेंट्स की संख्या। |
Clear() | सभी एलिमेंट्स हटाता है। |
UnionWith(IEnumerable<T>) | यूनियन (दोनों सेट्स के सभी यूनिक एलिमेंट्स)। |
IntersectWith(IEnumerable<T>) | इंटरसेक्शन (केवल कॉमन एलिमेंट्स)। |
ExceptWith(IEnumerable<T>) | डिफरेंस (केवल इस सेट में मौजूद एलिमेंट्स)। |
SymmetricExceptWith | सिमेट्रिक डिफरेंस (केवल एक सेट में मौजूद एलिमेंट्स)। |
IsSubsetOf / IsSupersetOf | सबसेट/सुपरसेट जांच। |
सेट ऑपरेशन्स उदाहरण
var setA = new HashSet<int> { 1, 2, 3, 4 };
var setB = new HashSet<int> { 3, 4, 5, 6 };
setA.UnionWith(setB); // {1,2,3,4,5,6}
setA.IntersectWith(setB); // {3,4}
setA.ExceptWith(setB); // {1,2} (setA में से setB के एलिमेंट्स हटाए)
HashSet vs List vs Dictionary
- List<T>: ऑर्डर्ड, डुप्लिकेट्स अनुमत, इंडेक्स एक्सेस
O(1), खोजO(n)। - HashSet<T>: अनऑर्डर्ड, यूनिक, खोज/इन्सर्ट
O(1), कोई इंडेक्स एक्सेस नहीं। - Dictionary<TKey,TValue>: की-वैल्यू पेयर्स, की यूनिक, वैल्यू डुप्लिकेट हो सकती है।