Junior
C#'ta HashSet nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
HashSet<T> sıralanmamış, benzersiz öğelerden oluşan bir koleksiyondur. Bir karma tabanlı tabloya dayanır ve öğelerin eklenmesi, silinmesi ve varlığının kontrolü gibi işlemleri hızlı bir şekilde gerçekleştirir (ortalama olarak sabit zaman, O(1)).
HashSet<T>'in temel özellikleri:
- Benzersizlik: Çift öğe içeremez. Var olan bir öğe eklenmeye çalışıldığında işlem göz ardı edilir.
- Sırasızlık: Öğeler belirli bir sıraya göre saklanmaz. Döngü sırasında sıralama, ekleme sırasından farklı olabilir.
- Performans: Karma kullanımı sayesinde, arama, ekleme ve silme işlemleri ortalama O(1) karmaşıklığındadır. Kötü hash fonksiyonu veya çakışmalar durumunda performans düşebilir.
- Çoklu işlemler: Birleşme (
UnionWith), kesişim (IntersectWith), fark (ExceptWith), altküme veya üstküme kontrolü (IsSubsetOf,IsSupersetOf) gibi çeşitli işlemleri destekler.
Kullanım örneği:
// HashSet oluşturma
HashSet<string> fruits = new HashSet<string>();
// Öğeleri ekleme
fruits.Add("elma");
fruits.Add("muz");
fruits.Add("portakal");
fruits.Add("elma"); // Yok sayılır, çünkü "elma" zaten var
// Öğenin varlığını kontrol etme
bool hasBanana = fruits.Contains("muz"); // true
bool hasGrape = fruits.Contains("üzüm"); // false
// Öğeyi kaldırma
fruits.Remove("portakal");
// Öğeleri döngü ile listeleme
foreach (string fruit in fruits)
{
// Çıktı: elma, muz (sıra değişebilir)
Console.WriteLine(fruit);
}
// Koleksiyonun boyutu
int count = fruits.Count; // 2
HashSet<T> ICollection<T>, IEnumerable<T> ve ISet<T> arayüzlerini uygular, böylece farklı koleksiyon senaryolarında kullanılabilir ve küme işlemleri gerçekleştirilebilir.