Sobes.tech
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.